第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Unity學(xué)習(xí)之RollAballGame改動(dòng)版本-點(diǎn)擊屏幕移動(dòng)小球

標(biāo)簽:
Unity 3D

根据Unity官方给的Tutorials的Roll-a-Ball tutorial实例进行了一定的改动,用来学习Unity,这个游戏就是小球撞击其他正方体让正方体消失,原始案例使用的是方向键,我将它改为屏幕点击使小球移动,这样一来,传到手机上一样可以玩,点击屏幕的代码,是我从网上找到的,因为我完全没有思路解决点击屏幕事件,就看了一下别人怎么实现的。于是,我查到了一个方法就是用Ray来实现,首先,屏幕是个二维界面,而这个游戏是个3D游戏,那么二维坐标和三维坐标肯定不一样,就需要通过射线来实现转换,以摄像机为源点,设定射线长为100,射线终点为鼠标左键点击的位置,当完成鼠标点击后,获取终点位置,这样就得到了点击时的世界坐标,接下来就是位移了,官方给的代码示例是根据小球的Rigidbody的addforce使小球发生移动,而查询到的代码使用的是Translate是小球位移。

那么我就展示一下我更改的代码,PlayerController.cs


using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PlayerController : MonoBehaviour {
    private Rigidbody rb;
    public float speed;
    public Text winText;
    private int count;
    public float speed1= 3f;
    private Vector3 offsetVec;
    // Use this for initialization
    void Start () {
        rb = GetComponent<Rigidbody>();
        count = 0;
        winText.text = "";
	}

    // Update is called once per frame
    void FixedUpdate()
    {
        RaycastHit hitInfo;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hitInfo, 100))
        {
            //当射线碰撞到plane并且鼠标左键按下时
            if (hitInfo.transform.tag == "Ground" && Input.GetMouseButtonDown(0))
            {
                //让cube方向朝向点击位置
                transform.LookAt(hitInfo.point);
                offsetVec = hitInfo.point - transform.position;
            }
        }
        //向量的magnitude表示这个向量的长度,当cube离我们点击位置小于1的时候才停止移动,这个数值可以自己调节
        if (offsetVec.magnitude > 1f)
        {
            transform.Translate(Vector3.forward * speed1 * Time.deltaTime);
            //更新offsetVec的值
            offsetVec = hitInfo.point - transform.position;
        }

    }
    
    void OnTriggerEnter(Collider other) {
        if(other.gameObject.CompareTag("Pick Up"))
        {
            count++;
            other.gameObject.SetActive(false);
            if (count>8)
            {
                winText.text = "You want to win? \n  Impossible.(-.-)";
            }
        }

    }
}

至于3D场景,我使用的时候出现了一点问题,10个正方体当中有一个无法碰撞消失,于是我将错就错,改为吃到9个就结束游戏。其他代码和官网给的一致,我就不贴出来了。


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消