2015-09-05 75 views
0

我正在嘗試將屏幕輕觸到屏幕的哪個位置,但只沿Y軸移動。我試過這個:使用觸摸位置沿Y軸移動播放器

Vector2 touchPosition; 
     [SerializeField] float speed = 1f; 

void Update() { 

      for (var i = 0; i < Input.touchCount; i++) { 

       if (Input.GetTouch(i).phase == TouchPhase.Began) { 

        // assign new position to where finger was pressed 
        transform.position = new Vector3 (transform.position.x, Input.GetTouch(i).position.y, transform.position.z); 

       } 
      }  
     } 

但玩家消失而不是移動。我究竟做錯了什麼?

回答

1

您需要將觸摸位置從屏幕轉換爲世界。這是很容易做到的,我剛剛敲這個快速腳本在一起,希望這有助於:

using UnityEngine; 
using System.Collections; 

public class TouchSomething : MonoBehaviour 
{ 
    public GameObject thingToMove; 

    public float smooth = 2; 

    private Vector3 _endPosition; 

    private Vector3 _startPosition; 

    private void Awake() 
    { 
     _startPosition = thingToMove.transform.position; 
    } 

    private void Update() 
    { 
     if(Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer) 
     { 
      _endPosition = HandleTouchInput(); 
     } 
     else 
     { 
      _endPosition = HandleMouseInput(); 
     } 

     thingToMove.transform.position = Vector3.Lerp(thingToMove.transform.position, new Vector3(_endPosition.x, _endPosition.y, 0), Time.deltaTime * smooth); 
    } 

    private Vector3 HandleTouchInput() 
    { 
     for (var i = 0; i < Input.touchCount; i++) 
     { 
      if (Input.GetTouch(i).phase == TouchPhase.Began) 
      { 
       var screenPosition = Input.GetTouch(i).position; 
       _startPosition = Camera.main.ScreenToWorldPoint(screenPosition); 
      } 
     } 

     return _startPosition; 
    } 

    private Vector3 HandleMouseInput() 
    { 
     if(Input.GetMouseButtonDown(0)) 
     { 
      var screenPosition = Input.mousePosition; 
      _startPosition = Camera.main.ScreenToWorldPoint(screenPosition); 
     } 

     return _startPosition; 
    } 
} 

這允許你還考在編輯器中也是如此。

我希望這會有所幫助。

+0

多數民衆贊成它的作品完美謝謝。那麼有沒有辦法讓這個運動順利而不是虛構?所以說,玩家在半秒內移動到觸摸位置? – JGrn84

+0

是的,我會看看使用Lerp來實現這一點,你可以在這裏看到一個教程使用它:https://www.youtube.com/watch?v=cD-mXwSCvWc – Garfty

+0

謝謝你的幫助:) – JGrn84