簡體   English   中英

使用觸摸位置沿Y軸移動播放器

[英]Move a player along Y axis using touch location

當屏幕被輕按時,我試圖將播放器移動到屏幕所輕按的位置,但僅沿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);

                }
            }    
        }

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

您需要將觸摸位置從屏幕轉換為世界。 這很容易做到,我將這個快速腳本組合在一起,希望對您有所幫助:

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;
    }
}

這也使您也可以在編輯器中進行測試。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM