1
因此,我開始了一種自上而下的2D RPG類遊戲,用自由形式的運動而不是大型網格特定的運動。我有一個「基本人穿過屏幕與瓷磚地圖相撞」。但是,當我用對角線對撞機撞擊一塊瓷磚時,我放慢了速度。在Unity中,如何在對角線上對角線自動滑動?
我似乎這樣做:
當我應該這樣做:
我的代碼是非常簡單和準系統。在大部分時間在互聯網上搜索完這些內容之後,我想出了這種解決方案,但這種解決方案不起作用。
void FixedUpdate()
{
float moveHorizontal = Input.GetAxisRaw("Horizontal");
float moveVertical = Input.GetAxisRaw("Vertical");
Movement = new Vector2(moveHorizontal, moveVertical);
Movement.Normalize();
rigidbody2D.velocity = Movement * Speed;
}
void OnCollisionEnter2D(Collision2D other)
{
Normal = other.contacts[0].normal;
rigidbody2D.velocity -= Normal * Vector2.Dot(rigidbody2D.velocity, Normal);
}
我在做什麼錯?我想這是一個相對標準的問題,因爲在平臺遊戲中沿着對角線或斜坡滑動在遊戲中很常見。
嗯,我不知道這會幫助太多。此外,似乎無論我在碰撞時如何設置速度,FixedUpdate循環都會覆蓋它。 – user961794