Unity3D-rigidBody.velocity

來源:互聯網
上載者:User

標籤:unity

還有半小時就下班了,寫一下今天遇到的問題、處理方法以及一些自己的理解。理解的不一定對,還希望大家指正。

今天我做的效果是,hero的移動。

以前做過用的是transform.Translate(Vector3.forward*Time.deltaTime*Speed);

但是這樣做有些bug就是移動不持續,當然你也可以加上時間延時函數,一點點的類比動畫效果,太麻煩了(我就想這樣幹)。

後來,老師指導我加力,rigidbody.AddForce(new Vector3(1,0,0));我這樣想太單純了,這樣做的效果就是,hero倒了。

沒辦法,後來拿到了一段代碼

rigidbody.velocity = transform.forward * heroXSpeed*1.1f;

walkDistance -= heroXSpeed * Time.fixedDeltaTime*1.1f;

核心是第一句rigidbody.velocity群中有說是計算剛體速度向量(好官方),有說給物體一個初速度。反正就是這個意思。

不過這段話放在Update()函數裡:

void Update (){animation.Play ("walk");rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;}
hero移動也有動畫

但是如果我寫一個觸發

void Update (){animation.Play ("walk");//rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;if (Input.GetKey (KeyCode.D)) {rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;//rigidbody.velocity =new Vector3(1,0,0);}}
這樣,當我按下D鍵,hero執行移動就沒有效果。

我又修改了一下代碼

void Update (){animation.Play ("walk");//rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;if (Input.GetKey (KeyCode.D)) {rigidbody.velocity += transform.forward * heroXSpeed * 1.1f;//rigidbody.velocity =new Vector3(1,0,0);}}

加了一個+號,它就可以了。這樣,我就推論出來,Update()是一幀一幀的渲染,可以即時顯示效果,但是加入判斷之後就需要等待響應,無法做到即時的效果。

還有一種寫法是

// Update is called once per framevoid Update (){animation.Play ("walk");//rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;if (Input.GetKey (KeyCode.D)) {//rigidbody.velocity += transform.forward * heroXSpeed * 1.1f;rigidbody.velocity =new Vector3(1,0,0);}}


這樣也可以移動,但是移動較快,和transform.Translate()效果差不多了。

註:heroXSpeed我取的是0.1f大家可以隨意

收拾收拾要下班了,啦啦啦。希望大家多多指教,畢竟我是新手,哈哈。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.