中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity3D場景漫游以及碰撞防止反彈

發布時間:2020-08-03 08:59:42 來源:網絡 閱讀:8334 作者:速度速度撒 欄目:游戲開發

這兩天一直在做一個漫游的東西,漫游的代碼,網上各種各樣,都有,但是在漫游的過程中出現一個問題,那就是碰到墻壁之后會穿墻,或者是會反彈,攝像機一直在抖動,這樣看起來很不爽,

漫游的程序就不多少了,有好多,我這用了兩種:

  1.采用滑動的偏移量來控制移動,這包括三種,

      第一一種是鼠標的Input.GetMouseButtonDown(0)和Input.GetMouseButton(0)計算偏移量;

      第二種就是使用虛擬軸

      float offetX = Input.GetAxis("Mouse X");//左右滑動

      float offetY = Input.GetAxis("Mouse Y");//上下滑動

      來控制移動和旋轉;

      第三種,采用就是移動平臺下的手指滑動,這個也有好多,也可以用

FingerGestures插件;

     這個可以看一看宣雨松的博客,講的很詳細,http://www.xuanyusong.com/archives/1869

     也可以用Input.GetTouch(0)手指滑動;

  總之一句話就是用的偏差量來控制移動和旋轉;

 2.防止攝像機穿墻:

   相碰的兩個物體都要添加Collider,運動的那個物體定要加剛體(給攝像機加一個Capsule子對象,將Collider和Rigidbody加載Capsule的父對象身上),但是防止穿墻就得靠Rigidbody組件的Constraints屬性了,分別有Freeze Position(x,y,z)和Freeze Rotation(x,y,z);固定位置和角度,Freeze Rotation(x,y,z)勾上哪一個軸,碰撞之后不超哪一個軸旋轉,Freeze Position(x,y,z)控制位置,防止穿墻,x和z軸不能勾,這樣碰撞之后就不會穿墻。

 3.防止碰撞反彈

    這個也不是很難,就是想不到這個問題出在哪,你看了之后就會明白,其實作為剛體,gameObject運動之后,rigidbody.velocity的值是不為Vector(0,0,0),作為剛體,碰撞后本來就會反彈,因而會一直在動,朝著反彈的方向,所以很鬧心,但是我們可以將rigidbody.velocity歸0,沒有速度了就不會反彈了,因為是物理特性的,所以不要寫在Update中,

 void FixedUpdate()

  {

    this.GetComponent<Rigidbody>().rigidbody.velocity = new Vector3(0, 0, 0);

  }

這就完美的解決了,如果有問題,提出來我們繼續討論

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淅川县| 怀仁县| 淄博市| 文山县| 长武县| 泸西县| 巩义市| 沁阳市| 固阳县| 龙胜| 通渭县| 炎陵县| 东海县| 九龙城区| 布尔津县| 凤冈县| 库尔勒市| 新龙县| 元阳县| 红河县| 奉节县| 大关县| 江北区| 宁海县| 淮阳县| 丽江市| 海城市| 五大连池市| 酒泉市| 龙陵县| 沾化县| 东阿县| 沂南县| 阿拉善右旗| 辽阳县| 博野县| 梓潼县| 双城市| 黔西县| 滦南县| 芦山县|