2013-01-13 81 views
2

我有一個移動物體將從它,當你按下shift鍵如何讓物體推進的拋射物向Unity3d中的特定點移動?

我希望我的舉動彈到特定點進行推動的彈丸(0,0,10)

我曾嘗試下面的代碼,但它不起作用

if (Input.GetKey("right shift")||Input.GetKey("left shift")) { 
      Rigidbody clone; 
      clone = Instantiate(projectile1, transform.position, transform.rotation) as Rigidbody; 
      clone.velocity=new Vector3(0,0,10); 

任何人都可以幫忙嗎?

回答

3

如果你想要一個恆定的速度,使用MoveTowards來代替:MoveTowards(pointA,pointB,delta)返回一個點在點pointA-pointB遠離deltaA單位從pointA - 並且固定到pointB,因此它永遠不會超出目的地點。

if (Input.GetKey("right shift")||Input.GetKey("left shift")) { 
      Rigidbody clone; 
      clone = Instantiate(projectile1, transform.position, transform.rotation) as Rigidbody; 
      clone.position = Vector3.MoveTowards(transform.position, new Vector3(0,0,10), Time.deltaTime * speed); } 

其中速度以米(或單位)/秒爲單位。

+0

delta的作用是什麼? – Mohammed

+0

@Mohammed這意味着如果你正朝着目標移動,那麼maxDistanceDelta是從當前到目標增加的距離。如果剩餘的實際距離小於maxDistanceDelta,它將被放置在目標位置上。 所以,如果maxDistanceDelta是5,每個呼叫都會將當前的5個單位移動到更接近目標的位置。它永遠不會「超越」目標。 Tyly您會將maxDistanceDelta參數與delta時間相乘。 –