真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

unity3鼠標(biāo)點擊移動-創(chuàng)新互聯(lián)

這個總共可以分為三個部分:
第一:如何取得目標(biāo)地點
第二:看向目標(biāo)地點,并向其移動
第三:障礙物判斷
我們先看第一個問題如何獲得目標(biāo)點:首先打開unity3d,新建一個工程檔。
創(chuàng)建一個Cube調(diào)整大小,制作成地面的形式,并修改名稱為“ floor ”把攝像機(jī)調(diào)整到適合的角度。
創(chuàng)建一個C#腳本,命名為“Pathfinding ”。
在腳本中輸入以下代碼:
void Update ()
        {

                //當(dāng)單機(jī)鼠標(biāo)時
                void Update ()
        {

                if(Input.GetMouseButtonDown(0))
                {

                          //定義一條從主相機(jī)射向鼠標(biāo)位置的一條射向
                        Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
                        RaycastHit hit;
                        //判斷射線是否發(fā)生碰撞
                        if (Physics.Raycast(ray, out hit, 100))
                        {
                                //判斷碰撞物體是否為floor
                                if(hit.collider.gameObject.name=="floor")
                                {

                                        //打印出碰撞點的坐標(biāo)
                                        Debug.Log(hit.point);
                                }
                        }
                }
           }
將代碼添加到我們的相機(jī)物體上,運行游戲,鼠標(biāo)在我們創(chuàng)建的地面上點擊,控制臺就會輸出點擊點的坐標(biāo),
通過上面的簡單的例子,我們就可以得到目的點的坐標(biāo),具體做法:當(dāng)我們點擊鼠標(biāo)時,從我們的攝像機(jī)朝我們鼠標(biāo)的方向發(fā)射一條射線,當(dāng)射線與地面發(fā)生碰撞時,輸出碰撞點的坐標(biāo),這個坐標(biāo)就是鼠標(biāo)點擊到地面的點的坐標(biāo),也就是目標(biāo)點坐標(biāo)。
  坐標(biāo)點已經(jīng)找到了,下面一部就是要讓我們的游戲物體看向這個坐標(biāo)點,
  有一種簡單的方法就是直接讓我們的主角lookat這個坐標(biāo)點。
  下面我們新建一個游戲?qū)ο?,作為我們的主角并修改名稱為“person”;
   補充腳本如下:
   private GameObject play;
        void Start ()
        {
                play=GameObject.Find("person");
        }
        // Use this for initialization
        void Update ()
        {

                if(Input.GetMouseButtonDown(0))
                {
                        Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
                        RaycastHit hit;

                        if (Physics.Raycast(ray, out hit, 100))
                        {

                                if(hit.collider.gameObject.name=="floor")
                                {
                                        Debug.Log(hit.point);
                                        play.transform.LookAt(hit.point);

                                }
                        }
                }

             }
運行游戲,當(dāng)我們點擊地面時,游戲物體旋轉(zhuǎn)方向看向我們點擊的點,
這樣做有一個問題,主角會瞬間旋轉(zhuǎn)到我們需要的角度,我們現(xiàn)在要控制他的旋轉(zhuǎn)速度,讓其緩慢旋轉(zhuǎn)。
這就要用到另外一種做法;用到四元數(shù)組transform.rotation = Quaternion.Slerp (from.rotation, to.rotation,Time.time * speed);
from.rotation為初始角度,
to.rotation為目標(biāo)角度
  speed為旋轉(zhuǎn)速度,
利用者個方法,我們就可以實現(xiàn)讓物體緩慢旋轉(zhuǎn)到我們要的指定角度,
具體做法,新建一個空物體,命名為To_rotation,將其作為person 物體的子物體,
代碼補充如下:
        public Transform to;
        public float speed = 5F;
        private GameObject play;

        void Start ()
        {
                play=GameObject.Find("person");
                to=GameObject.Find("To_rotation ");

        }
        // Use this for initialization
        void Update ()
        {

                if(Input.GetMouseButtonDown(0))
                {
                        Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
                        RaycastHit hit;

                        if (Physics.Raycast(ray, out hit, 100))
                        {

                                if(hit.collider.gameObject.name=="floor")
                                {
                                        Debug.Log(hit.point);
                                        //點擊地面后解除to的父子關(guān)系;并讓我lookat目標(biāo)點;
                                        to.transform.parent = null;
                                        to.LookAt(hit.point);
                                }
                        }
                }

                //如果我們的play 的旋轉(zhuǎn)角度與to的角度相同,則恢復(fù)其父子關(guān)系,并將其坐標(biāo)歸零
                if(play.transform.rotation==to.rotation)
                {
                        to.transform.parent=play.transform;
                        to.transform.localPosition = new Vector3(0, 0, 0);

                }
                else

                       //如果play  與to的角度不同,則旋轉(zhuǎn)play至to所在的角度
                        play.transform.rotation = Quaternion.Slerp(play.transform.rotation, to.rotation, speed);

        }
執(zhí)行代碼,的到我們想要的效果;

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、青陽網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為青陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章標(biāo)題:unity3鼠標(biāo)點擊移動-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/docjgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部