簡體   English   中英

為什么Physics2D會為AddForce()與速度產生不同的結果?

[英]Why does Physics2D produce different results for AddForce() versus velocity?

為什么重力在Physics2D發動機Unity2D行動不同的代碼時,這兩個以下行交替地執行?

例如,我已經附加到我的播放器精靈播放器控制器C#腳本:

private float speed = 500f;
RigidBody2D playerChar = null;

然后讓我的角色走路

Vector2 vec = new Vector2 (Input.GetAxis("Horizontal"), 0);
playerChar.AddForce(vec * speed);

並且重力設置為50

結果1:我的角色頭像正常掉落。

與此同時我做:

Vector2 vec = new Vector2 (Input.GetAxis("Horizontal"), 0);
playerChar.velocity  = (vec * speed);

並且重力仍然設定為50

結果2:我的角色現在需要很長時間才能摔倒(慢慢地“漂浮”下來)。

這是為什么?

這是因為你強迫剛體速度的y分量為零。

添加力時,它會添加 ,但不會替換。

當你設置速度時,你專門將它設置為一個值為0的Vector2,重力然后在固定的更新周期開始並增加一點重力,導致你的玩家緩慢下降。 然后再次發生更新,並再次強制y值回到0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM