色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 第一人稱視角移動問題

第一人稱視角移動問題 時間:2017-11-07      來源:未知

Unity3D作為目前比較火的游戲引擎,其在游戲移動端的市場范圍是非常大的。雖然其渲染能力以及效率有待提高,但是不妨礙它的強大優勢。并且在2016年VR元年的確定下,它對市場絕大多數VR設備開發的支持使其越來越受到人們的歡迎。

在VR開發中,第一人稱的移動始終是至關重要的一項。無論是角色的速度、動作幅度的搖擺、人物的動作姿態等等,都是開發者需要謹慎對待的部分。接下來我和大家說下在VR中移動容易出現的一些問題。

由于公司在開發VR項目的時候沒有考慮到的多設備支持,并沒有用到市場上相關的SDK,而是使用Unity中Camera的屬性制作了簡易的VR攝像機。制作部分如下:

首先創建一個空物體并命名為VRCamera,用來作為兩個攝像機的父物體,并將VRCamera物體的Transform組件初始化。方便對VR攝像機的操作。

然后選中VRCamera物體,然后創建出兩個攝像機,分別命名為LeftCamera和RightCamera。作為VRCamera的子物體。

然后將其中任意一個Camera上的Audio Listener組件單擊右鍵選擇Remove Component移除掉(只移除一個)。

將Main Camera攝像機Transform歸0。將其拖到VRCamera下作為其子物體。并將Depth設置為-1。

將LeftCamera攝像機參數修改為下圖所示。

將RightCamera攝像機參數修改為下圖所示。

修改完之后,創建一個Cube調整其位置便于觀察,在Game視圖下的場景如下圖所示。

然后在VRCamera上添加碰撞體和剛體進行人物的模擬,并且在其身上掛在移動的腳本。正常情況下是掛在的接受手機陀螺儀數據的腳本。如果使用普通的移動方式,例如:

對其位置進行增減transrorm.position += 或者-=,或者使用transfrom.Translate方法此時均會產生低頭的時候會穿破地面,抬頭的時候會離開地面。或者干脆就停止不動。

遇到這種問題的時候,當物體帶有剛體,需要對物體進行移動的時候,好的辦法是對其剛體組件進行操作,使用如下方法:

Rigidbody.MovePosition(transform.position +=/-= ...);

而其移動的方向是:

Vector3 dir = new Vector3(Camera.main.transform.forward.x, 0,Camera.main.transform.forward.z);

這樣就能保證當地頭的時候,向前移動會低著頭向前走,而不是穿破地面,抬頭的時候是抬頭向前走,而不是離開地面。

下面是我做的一個模擬:

創建工程,然后在Inspector面板中創建物體Plane作為地面。

然后繼續在Inspector面板中創建子物體Capsule模擬人物模型,并調節Capsule物體的高度,使其底部處于Plane物體上。

在Project中創建Material,并填充顏色,將該材質球賦值給Plane,以作區別。

在Project面板中創建腳本Move.cs,用來實現物體的移動和旋轉。按下“W”或者“↑”是向前走,按下“S”或者“↓”是向后走。移動鼠標是旋轉,然后將該腳本掛載在Capsule物體上。

腳本如下: 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

 

public class Move : MonoBehaviour

{

    #region 變量

    /// <summary>

    /// 剛體

    /// </summary>

    private Rigidbody rigid;

 

    /// <summary>

    /// 移動的速度

    /// </summary>

    private float walkSpeed = 0.05f;

 

    /// <summary>

    /// 移動的方向

    /// </summary>

    private float moveDir;

 

    /// <summary>

    /// 旋轉的方向

    /// </summary>

    private float rotateDir;

 

    /// <summary>

    /// 旋轉速度

    /// </summary>

    private float rotateSpeed = 30f;

    #endregion

    #region Unity 方法

 

    private void Awake()

    {

        // 初始化剛體組件

        rigid = transform.GetComponent<Rigidbody>();

    }

    private void Update()

    {

        moveDir = Input.GetAxis("Vertical");

        rotateDir = Input.GetAxis("Mouse X");

        if (rotateDir != 0)

        {

         transform.Rotate

            (Vector3.up * rotateDir * Time.deltaTime * rotateSpeed);

        }

        if (moveDir > 0)

        {

            // 向前走

            MoveForward();

        }

        else if(moveDir < 0)

        {

            // 向后走

            MoveBack();

        }

    }

 

    #endregion

    #region 具體實現的方法

    /// <summary>

    /// 向前走

    /// </summary>

    /// <param name = "speed">移動的速度</param>

    /// <param name="fixedTime">固定更新的時間</param>

    void MoveForward()

    {

        // 移動的方向,y軸不變

        Vector3 dir = new Vector3(Camera.main.transform.forward.x, 

            0,

            Camera.main.transform.forward.z);

        // 移動

        rigid.MovePosition(transform.position + dir * walkSpeed);

    }

 

    /// <summary>

    /// 向后走

    /// </summary>

    /// <param name="speed">移動的速度</param>

    /// <param name="fixedTime">固定更新時間</param>

    void MoveBack()

    {

        // 移動的方向,y軸不變

        Vector3 dir = new Vector3(Camera.main.transform.forward.x,

             0,

             Camera.main.transform.forward.z);

        // 移動

        rigid.MovePosition(transform.position - dir * walkSpeed);

    }

    #endregion

}

 

然后在Capsule物體上添加Rigidbody組件,并調整參數。

做到這一步驟,Capsule已經可以移動旋轉了。接下來做第一人稱的實現,將Inspector面板中的Main Camera,然后修改其位置和Capsule位置一致,并將Main Camera拖動為Capsule的子物體。

然后在Inspector面板中床架Cube并隨意修改其位置作為參照物。然后點擊運行,可以實現第一人稱的移動旋轉等操作。

同樣的設置設置在VRCamera物體上一樣可以實現該操作。

上一篇:NOR FLASH和NAND FLASH

下一篇:IIC裸機開發過程

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 欧美亚洲国产日韩2020| 亚洲iv一区二区三区| 中文字幕欧美专区| 日韩美女主播视频| 久久综合免费视频影院| 成人网欧美在线视频| 欧美极品少妇全裸体| 亚洲天堂男人的天堂| 国产精品福利在线| 都市激情亚洲色图| 亚洲人成网在线播放| 国产精品在线看| 欧美视频在线观看 亚洲欧| 亚洲理论片在线观看| 国产精品久久久久久久久男 | 亚洲奶大毛多的老太婆| 日本精品视频在线观看| 久久99精品久久久久久青青91 | 国产成人综合av| 久久在线免费观看视频| 亚洲国产欧美精品| 欧美一级成年大片在线观看 | 91高清视频在线免费观看| 最新中文字幕亚洲| 亚洲自拍中文字幕| 青青a在线精品免费观看| 懂色aⅴ精品一区二区三区蜜月| 亚洲欧美一区二区三区在线| 国产男女猛烈无遮挡91| 国内免费精品永久在线视频| 久久久成人的性感天堂| 亚洲男人天堂2019| 国产一区二区在线免费视频| 97在线视频免费| 久久69精品久久久久久久电影好| 亚洲视频第一页| 国产精品99久久久久久白浆小说| 久久久久一本一区二区青青蜜月 | 欧美理论电影在线观看| 国产一区二区三区网站| 日韩视频在线免费|