2016-06-30 13 views
0

私はユニティ3Dでボードを持っており、ボードにキューブがあります。ボードにはY座標でテクスチャとテクスチャのオフセットが変化しているので、後ろに移動するようです。 Cubeはボードのオフセットと同じスピードで動くはずですが、同じスピードを設定することはできませんでした。ユニティ - テクスチャスクロールスピードgameobject

マイボードのスクロールコード:

public class moveBoard : MonoBehaviour 
{ 

// Use this for initialization 
void Start() 
{ 

} 

// Update is called once per frame 
void Update() 
{ 

    this.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex", new Vector2(0, -1 * Time.time)); 
} 
} 

そして、私のキューブ移動コード:

public class moveTus : MonoBehaviour 
{ 
public GameObject board; 
float offsetY = 0f; 
// Use this for initialization 
void Start() 
{ 

} 

// Update is called once per frame 
void Update() 
{ 
    this.transform.Translate(Vector3.back * -10 * Time.deltaTime) ; 
} 
} 

だから私は、ボードの速度オフセットの同じ速度でキューブを移動する必要があります。

答えて

1

両方のスクリプトにpublic速度変数を含めます。実行時に

public class moveBoard : MonoBehaviour { public float speed=1; void Update() { this.GetComponent().material.SetTextureOffset("_MainTex", new Vector2(0, -1 * Time.deltaTime * speed * UserOptions.speed)); } }

public class moveTus : MonoBehaviour { public float speed=1; void Update() { this.transform.Translate(Vector3.back * -10 * Time.deltaTime * speed * UserOptions.speed) ; } }

エディタインスペクタに手動でこれらの速度変数の値のいずれかを変更することにより、同期してみてください。それらの間の微調整を見つけたら、これらの値を設計時に適用します。

+0

あなたは本当ですが、ユーザーはゲームのオプションで速度変数を変更することができます。そうすれば、私の目でそれを見つけることができない場合、それらの間に完璧な率があるはずです。 –

+0

ユーザーが選択した速度を保持するには、静的変数が必要です。あなたは両方の速度をそれによって寒い倍数にします。とにかく前にこの同期を見つけなければなりません。 – glaubergft

+0

以前の同期速度であっても、オプション速度を変更した場合は、同期変数を変更する必要があります。それ以外の場合は、再度差分を確認してください。 –