unity触摸屏控制角色移动、配置移动速度、方向、速度保持、防误触、摄像机跟随
·


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveTest : MonoBehaviour
{
public float x = 189f;
public float y = 1f;
public float z = 562f;
[SerializeField]
private Transform camera;
public float dx = 2;
public float dy = 14;
public float dz = -10;
public int speed = 1;
public Vector3 dretOne = Vector3.zero;
public bool if_move = false;
Vector2 deltaPos = Vector2.zero;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
Debug.Log("Touch began");
if_move = true;
}
else if (touch.phase == TouchPhase.Moved)
{
deltaPos = touch.deltaPosition;
if (Math.Abs(deltaPos.x) > 2 || Math.Abs(deltaPos.y) > 2)
{
dretOne = new Vector3(deltaPos.x, 0, deltaPos.y).normalized;
}
Debug.Log("Touch moved:" + deltaPos);
}
else if (touch.phase == TouchPhase.Ended)
{
Debug.Log("Touch ended");
if_move = false;
}
}
if (if_move)
{
Move();
}
CameraLook();
}
void Move()
{
//transform.Rotate(Vector3.down * deltaPos.x, Space.World);
//transform.Rotate(Vector3.right * deltaPos.y, Space.World);
transform.localPosition += dretOne * Time.deltaTime * speed;
}
public void BackBtn()
{
transform.position = new Vector3(x, y, z);
}
void CameraLook()
{
camera.position = transform.position + new Vector3(dx, dy, dz);
}
}
更多推荐
所有评论(0)