确定滑动或轻击

本文关键字: | 更新日期: 2023-09-27 18:09:15

我正在尝试确定在点击屏幕和滑动屏幕之间。我想确定从左,右,上,下滑动。现在,当我向左或向右滑动时,它也会让玩家转向。这是不可能发生的。它应该是其中之一,要么转向,要么向左或向右移动。我的问题是如何确定这五件事?左,右,上,下滑动,以及只是轻敲屏幕。这是我的代码

using UnityEngine;
using System.Collections;
public class PlayerMotor : MonoBehaviour {
    private CharacterController controller;
    private Vector3 moveVector;
    private float speed = 2.0f;
    private float verticalVelocity = 0.0f;
    private float gravity = 12.0f;
    public Touch touch;
    private void Start() {
        controller = GetComponent<CharacterController> ();
    }
    private void Update() 
    {           
        moveVector = Vector3.zero;
        if (controller.isGrounded) 
        {
            verticalVelocity = -0.5f;
        } 
        else 
        {
            verticalVelocity -= gravity * Time.deltaTime;
        }
        if (Input.GetMouseButton (0)) 
        {
            if (touch.position.x == touch.deltaPosition.x && touch.position.x == touch.deltaPosition.x) 
            {   //3px accuracy, stationery :P
                moveVector.x = transform.forward.x * speed;
                transform.Rotate (new Vector3 (0, -90, 0));
            } 
            else if (touch.position.x != touch.deltaPosition.x && touch.position.x != touch.deltaPosition.x) 
            {
                if (Input.mousePosition.x > Screen.width / 2)
                    moveVector.x = speed;
                else
                    moveVector.x = -speed;
            }
        }
        moveVector.y = verticalVelocity;
        moveVector.z = transform.forward.z * speed;
        controller.Move (moveVector * Time.deltaTime);
    }
}

确定滑动或轻击

我通过一点点搜索找到了这段代码。(这里)

在所有if (currentSwipe...)语句之后添加一个else语句应该能够检测到点击

//inside class
Vector2 firstPressPos;
Vector2 secondPressPos;
Vector2 currentSwipe;
public void Swipe()
{
     if(Input.touches.Length > 0)
     {
         Touch t = Input.GetTouch(0);
         if(t.phase == TouchPhase.Began)
         {
              //save began touch 2d point
             firstPressPos = new Vector2(t.position.x,t.position.y);
         }
         if(t.phase == TouchPhase.Ended)
         {
              //save ended touch 2d point
             secondPressPos = new Vector2(t.position.x,t.position.y);
              //create vector from the two points
             currentSwipe = new Vector3(secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);
             //normalize the 2d vector
             currentSwipe.Normalize();
             //swipe upwards
             if(currentSwipe.y > 0  currentSwipe.x > -0.5f  currentSwipe.x < 0.5f)
             {
                 Debug.Log("up swipe");
             }
             //swipe down
             if(currentSwipe.y < 0  currentSwipe.x > -0.5f  currentSwipe.x < 0.5f)
             {
                 Debug.Log("down swipe");
             }
             //swipe left
             if(currentSwipe.x < 0  currentSwipe.y > -0.5f  currentSwipe.y < 0.5f)
             {
                 Debug.Log("left swipe");
             }
             //swipe right
             if(currentSwipe.x > 0  currentSwipe.y > -0.5f  currentSwipe.y < 0.5f)
             {
                 Debug.Log("right swipe");
             }
         }
     }
}
相关文章:
  • 没有找到相关文章