2016-10-24 617 views
0

我對Unity和C#很陌生,一直在努力弄清楚這一點!Unity加速和減速C#

我希望我的船逐漸獲得速度,然後慢慢地停下來,好像沒有重力一樣,因爲它將成爲一個太空遊戲!

如果有人能幫助我,甚至指導我到這個問題的教程,我將不勝感激! :)

這裏是我的代碼,目前我的飛船......

using UnityEngine; 
using System.Collections; 
using UnityStandardAssets.CrossPlatformInput; 

public class PlayerMovement : MonoBehaviour { 

    public float maxSpeed = 6f; 
    public float rotSpeed = 180f; 


    void Start() 
    { 

    } 

    void Update() { 
     Quaternion rot = transform.rotation; 

     float z = rot.eulerAngles.z; 

     z -= CrossPlatformInputManager.GetAxis ("Horizontal") * rotSpeed * Time.deltaTime; 

     rot = Quaternion.Euler (0, 0, z); 

     transform.rotation = rot; 

     Vector3 pos = transform.position; 

     Vector3 velocity = new Vector3 (0, CrossPlatformInputManager.GetAxis("Vertical") * maxSpeed * Time.deltaTime, 0); 

     pos += rot * velocity; 

     transform.position = pos; 


    } 
} 

如何才能做到這一點?

+0

所以你想做出某種「easeInOutCubic」? (取自CSS) – Radinator

+0

也許[this](http://answers.unity3d.com/questions/514505/acceleration-script.html)可以幫助你在不使用物理引擎的情況下實現你想要的東西(即使使用物理更容易你的情況我猜)。 – Kardux

回答

1

和Unity中的任何東西一樣,有一百種方法可以做到這一點,但我認爲使用物理學會是最簡單的。

現在你直接操縱變換。這很好,但實際上比讓Unitys物理學爲你做數學要複雜得多。

您需要做的就是將Rigidbody組件(或2D遊戲的Rigidbody2D)附加到您的船上。

然後,通過給剛體加力,你會得到一個很好的逐漸加速,並通過調整Rigidbodys線性和角度阻力在檢查員中,你會得到一個非常平穩和自然的感覺減速。

這裏是用物理的官方文檔:https://docs.unity3d.com/Manual/class-Rigidbody.html

利用物理學是Unity開發的一個非常有趣和重要的一部分,所以如果你是剛剛起步,我強烈建議現在就學習它,這是完美的用它來解決問題。

0

你可以試試這個:

Vector3 velocity = transform.forward * CrossPlatformInputManager.GetAxis("Vertical") * maxSpeed * Time.deltaTime; 

    pos += velocity; 

    transform.position = pos; 

我希望它是有用的。