在我的游戲中,我有由 Vector3.moveTowards 控制的移動平臺。他們作業得很好而且我有一個播放器腳本,它有這樣的控制元件:
void Update()
{
var movement = Input.GetAxis("Horizontal");
rigidBody.position = new Vector2(movement, 0) * movementSpeed * Time.deltaTime;
}
這當然不是玩家控制元件中的所有內容,但沒有其他任何東西可以改變位置/對撞機/剛體。我所擁有的一切都很好問題是當我在平臺上跳躍時,玩家會隨著平臺移動,但不能自行移動我需要跳躍才能再次在空中和不動的地面上移動
private void OnCollisionEnter2D(Collision2D collision)
{
collision.transform.SetParent(transform);
}
private void OnCollisionExit2D(Collision2D collision)
{
collision.transform.SetParent(null);
}
我嘗試使用 addforce 和 movePosition 進行移動,但結果與我現在遇到的問題相似,但它也發生在不移動的地面上 這是平臺的剛體組件和與此問題相關的玩家組件
如果跳轉很重要,那么這里是它的腳本
void Jump()
{
rigidBody.velocity = new Vector2(rigidBody.velocity.x, 0);
rigidBody.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
Debug.Log("jump");
}
在此處輸入影像描述 在此處 輸入影像描述
uj5u.com熱心網友回復:
我使用您在此處發布的那些腳本重新構建了您的設定,但一切似乎對我來說都很好。我的猜測是設定父物件時出現問題。由于您的觸發器和碰撞設定看起來一切正常,我建議如下:
- 試著用速度而不是位置來操縱左右,因為這似乎是我現在能看到的跳躍和運動之間唯一可見的區別。
- 可能是您在平臺上嘗試移動時抓住了錯誤的剛體組件?(例如,您要抓住平臺之一而不是玩家之一?)
我希望這在某種程度上有所幫助!(我會把它作為評論發布,但我還沒有足夠的代表)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485849.html
