1、挂载脚本到角色的父物体A上
2 、以屏幕左边的触摸为移动,右边为转向操作
3、加载角色时,将角色的父物体设置为A,须将角色的位置和角度置0
using System;
using System. Collections;
using System. Collections. Generic;
using UnityEngine;
public class TouchMove : 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 = 8 ;
public int roteSpeed = 45 ;
public Vector3 dretOne = Vector3. zero;
public bool if_move = false;
public bool if_rote = false;
Vector2 deltaPos = Vector2. zero;
int roteDirt = 0 ;
public int screenWidth = Screen. width;
public int screenHeight = Screen. height;
void Start ( )
{
}
void Update ( )
{
if ( Input. touchCount == 1 )
{
Touch touch = Input. GetTouch ( 0 ) ;
if ( touch. position. x < screenWidth / 2 )
{
checkMove ( touch) ;
} else if ( touch. position. x > screenWidth / 2 )
{
checkRote ( touch) ;
}
} else if ( Input. touchCount > 1 )
{
Touch touch1 = Input. GetTouch ( 0 ) ;
Touch touch2 = Input. GetTouch ( 1 ) ;
if ( touch1. position. x < screenWidth / 2 )
{
checkMove ( touch1) ;
}
else if ( touch1. position. x > screenWidth / 2 )
{
checkRote ( touch1) ;
}
if ( touch2. position. x < screenWidth / 2 )
{
checkMove ( touch2) ;
}
else if ( touch2. position. x > screenWidth / 2 )
{
checkRote ( touch2) ;
}
}
if ( if_move)
{
Move ( ) ;
}
if ( if_rote)
{
Rote ( ) ;
}
}
void checkRote ( Touch touch)
{
if ( touch. phase == TouchPhase. Began)
{
Debug. Log ( "Touch began" ) ;
if_rote = true;
Debug. Log ( "触碰位置:" + touch. position) ;
}
else if ( touch. phase == TouchPhase. Moved )
{
deltaPos = touch. deltaPosition;
if ( Math. Abs ( deltaPos. x) > 2 )
{
if ( deltaPos. x< 0 )
{
roteDirt = - 1 ;
}
else
{
roteDirt = 1 ;
}
}
Debug. Log ( "Touch moved:" + deltaPos) ;
}
else if ( touch. phase == TouchPhase. Ended)
{
Debug. Log ( "Touch ended" ) ;
if_rote = false;
roteDirt = 0 ;
}
}
void checkMove ( Touch touch)
{
deltaPos = touch. deltaPosition;
if ( touch. phase == TouchPhase. Began)
{
Debug. Log ( "Touch began" ) ;
if_move = true;
Debug. Log ( "触碰位置:" + touch. position) ;
}
if ( touch. phase == TouchPhase. Moved )
{
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;
dretOne = Vector3. zero;
}
}
void Rote ( )
{
transform. Rotate ( Vector3. up * roteDirt* roteSpeed * Time. deltaTime, Space. Self) ;
}
void Move ( )
{
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) ;
}
}