3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您想要基于物理的跳躍,請(qǐng)不要使用 MovePosition。MovePosition 只會(huì)根據(jù)您的插值設(shè)置將剛體移動(dòng)到某個(gè)位置。由于您的插值沒有,您會(huì)得到“非常滯后的運(yùn)動(dòng)”。
相反,您應(yīng)該使用沖力。在您只嘗試加速力之前。此外,您的水平運(yùn)動(dòng)也必須相應(yīng)地改變以增加力量。像這樣嘗試:
void Jump()
{
rb.AddForce(Vector2.up*jumpVelocity, ForceMode2D.Impulse);
}
要對(duì)此進(jìn)行測(cè)試,您應(yīng)該暫時(shí)禁用水平移動(dòng)?;蛘吣憧梢赃@樣做:
private void Update()
{
float horizontal = Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime;
rb.AddForce(horizontal * Vector2.right);
}
還有幾件事:
-從不檢查 FixedUpdate 循環(huán)內(nèi)的輸入!您的游戲可能以 100 fps 運(yùn)行,并且取決于固定更新(之所以稱為 fix,是因?yàn)?unity 試圖保持物理更新幀率固定),您可能會(huì)錯(cuò)過按下按鈕的機(jī)會(huì)。
- 如果您使用 MovePosition,請(qǐng)僅在 FixedUpdate 中使用它。
-你可能想改變你檢查跳躍輸入的方式,你也可能想檢查玩家是否接地。
-您還應(yīng)注意,還應(yīng)避免在更新中使用 AddForce 作為加速力。

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先,您需要調(diào)用Rigidbodyfrom的方法,F(xiàn)ixedUpdate因?yàn)槟鞘怯?jì)算物理的地方。其次將您的向量值乘以Time.fixedDeltaTime.
例子:
void FixedUpdate()
{
rb.MovePosition(rb.position + position * Time.fixedDeltaTime);
}

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
我有這個(gè)問題。就好像這個(gè)角色在傳送而不是慢慢上升。
我通過更改代碼解決了它。
我使用了這段代碼: MainBodyRigidBody.velocity = new Vector3 (Delta_X, 0, Delta_Y) * MovementSpeed * Time.deltaTime;
但我應(yīng)該使用MainBodyRigidBody.velocity +=
我將我的代碼更改為:
MainBodyRigidBody.velocity += new Vector3 (Delta_X, 0, Delta_Y) * MovementSpeed * Time.deltaTime;
我為我的角色運(yùn)動(dòng)使用了上面的代碼,但它導(dǎo)致了我的問題。
- 3 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)