2014-09-24 631 views
1

我有一個上下移動的目標,但我不確定如何將其垂直移動限制在某個y軸範圍內。感謝您的任何建議。代碼如下:Unity3D - 物體在y軸範圍內連續上下移動

using UnityEngine; 
using System.Collections; 

public class TargetMovementVertical : MonoBehaviour 
{ 
    public int maxSpeed; 

    private Vector3 startPosition; 

    // Use this for initialization 
    void Start() 
    { 
     maxSpeed = 3; 

     startPosition = transform.position; 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     MoveVertical(); 
    } 

    void MoveVertical() 
    { 
     transform.position = new Vector3(transform.position.x, startPosition.y + Mathf.Sin(Time.time * maxSpeed), transform.position.z); 

     if(transform.position.y > 1.0f) 
     { 
      transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z); 
     } 
     else if(transform.position.y < -1.0f) 
     { 
      transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z); 
     } 
    } 
} 

回答

2

你的問題可能有兩個方面的含義:如果你想限制Y移動是內-1到1,使用下面的代碼

1: (例如,如果你的原始y等於5,其結果將是在範圍之內(4,6)

transform.position = new Vector3(0, startPosition.y + Mathf.Sin(Time.time * maxSpeed), 0); 

2 - 如果你想的y值總是在-1到1,使用下面的代碼: (您的結果Y VAL無論原始y值如何,ue都將在範圍內(-1,1))

transform.position = new Vector3(transform.position.x, Mathf.Sin(Time.time * maxSpeed), transform.position.z); 
+0

對不起,我的意思是我已經在場景中有一個對象,並且我試圖使它相對於它已經存在的位置向上和向下移動。我嘗試了兩種方法,但仍然無法正常工作。它使得它在y軸上下跳得更遠。 – khmer2040 2014-09-24 13:45:35

+1

我剛剛測試過我的舊解決方案,發現問題,我認爲我們不應該添加舊的y值,而是用startPosition.y替換它。請檢查我的更新解決方案。 – 2014-09-24 14:25:04

+0

我已經開始工作了,但非常感謝您的幫助。我真的很感激它:) – khmer2040 2014-09-24 20:41:57

0

沒做過與Unity3d的東西,但

此:

transform.position = new Vector3(
    transform.position.x, transform.position.y, transform.position.z); 

不會做任何事情? (perhapse觸發INotifyPropertyChanged的)


如果你想用-1到+1的範圍內移動的對象時,你應該startPosition.y + Mathf.Sin(Time.time * maxSpeed)刪除startPosition.y因爲正弦函數已經有了一個範圍從-1 +1,同時加上前一個開始位置,會更快地增加每次更新的值。


void MoveVertical() 
{ 
    transform.position.y = Mathf.Sin(Time.time * maxSpeed); 
} 
0

我們如何用Y軸移動對象範圍是[1,3]?