2016-10-27 2 views
2

私はゲームのために非常に単純な移​​動プラットフォームを作った。Unity C#ランタイムでの移動プラットフォームのオフセット

public float speedX; 
public float speedY; 
public float length; 
public float pause; 

float timer; 
Vector3 move; 

void Start() { 
    timer = 0; 
} 

void Update() 
{ 
    if (timer == 0) 
    { 
     speedX *= -1; 
     speedY *= -1; 
     timer = length; 
    } else 
    { 
     timer--; 
    } 
    if (timer > pause) 
    { 
     move = new Vector3(speedX, speedY, 0); 
     transform.Translate(move * Time.smoothDeltaTime); 
    } 
} 

私がシーンをプレイするとき、私はそれらを配置したときにうまく動作します。しかし、私がゲームをプレイしてその場面に出ると、どの方向に動いていても、プラットフォームはすべて相殺されます。 異なるプレイセッションでプラットフォームを一貫して動かす方法については、誰でも知っていますか?

+1

その場面に入る前に破壊されていますか? – Bijan

答えて

2

Time.smoothDeltaTimeは固定レートではないため、プラットフォームの移動距離が変わります。これらの小さな差異は、元の位置を合算して置き換えます。

start &エンドポイントを定義し、それらの間を移動します。いくつかのアイデアのためにこれらの便利な方法をチェックアウト:Vector3.MoveTowards & Vector3.Lerp

0

そのhttp://dotween.demigiant.com/のように、トゥイーンエンジンを使用した方が良いです。

あなたがDotweenをインストールした場合、あなたは単にあなたがまたトゥイーンのしやすさに設定することができます

transform.DOMove(new vector3(1 ,0 , 1) , duration); 

を使用することができます。またはOncomplete関数を使用します。

transform.DOMove(new vector3(1 ,0 , 1) , duration) 
    .SetEase(Ease.OutCubic) 
    .OnCompelete(() => { shouldClose = true; }); 

また、トゥイーンにループを設定することもできます。.SetLoops(-1)

関連する問題