2016-10-24 28 views
0

私はUnityとC#の方が新しく、これを理解するのに苦労しています!ユニティアクセラレーションと減速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の何かと同様、潜在的にこれを行うことができる100の方法がありますが、私は物理を使うのが最も簡単だと思います。

今では、トランスフォームを直接操作しています。これは問題ありませんが、実際にはユニティスの物理学があなたに数学をさせるだけでなく、はるかに複雑です。

あなたがする必要があることは、あなたの船にRigidbodyコンポーネント(または2DゲームのRigidbody2D)を添付することだけです。

リジッドボディに力を加えれば、穏やかな漸進的な加速が得られ、インスペクタでRigidbodysの直線と角度ドラッグを調整することで、非常に滑らかで自然な感覚の減速が得られます。ここで

物理学を使用して、上の公式ドキュメントです:物理学を活用しhttps://docs.unity3d.com/Manual/class-Rigidbody.html

はユニティ開発の非常に楽しさと重要な部分ですので、あなただけ出始めている場合、私は非常に今、それを学ぶお勧めします、これは完璧ですそれを解決する問題。

0

あなたはこれを試すことができます。

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

    pos += velocity; 

    transform.position = pos; 

私はその有用な願っています。