/****************************************************
文件:PlayerController.cs
作者:Edision
邮箱: 424054763@qq.com
日期:2019/6/28 16:45:58
功能:角色控制器
*****************************************************/
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Transform camTrans;
private Vector3 camOffset;
private int PlayerMoveSpeed=8;
public CharacterController ctrl;
private bool isMove = false;
private Vector2 dir = Vector2.zero;
public Vector2 Dir
{
get
{
return dir;
}
set
{
if (value == Vector2.zero)
{
isMove = false;
}
else
{
isMove = true;
}
dir = value;
}
}
private void Start()
{
camTrans = Camera.main.transform;
camOffset = transform.position - camTrans.position;
}
private void Update()
{
#region Input
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector2 _dir = new Vector2(h, v).normalized;
if (_dir != Vector2.zero)
{
Dir = _dir;
}
else
{
Dir = Vector2.zero;
}
#endregion
if (isMove)
{
//设置方向
SetDir();
//产生移动
SetMove();
//摄像机跟随
SetCam();
}
}
private void SetDir()
{
float angle = Vector2.SignedAngle(dir, new Vector2(0, 1));
Vector3 eulerAngles = new Vector3(0,angle,0);
transform.localEulerAngles = eulerAngles;
}
private void SetMove()
{
ctrl.Move(transform.forward*Time.deltaTime*Constants.PlayerMoveSpeed);
}
private void SetCam()
{
if (camTrans!=null)
{
camTrans.position = transform.position - camOffset;
}
}
}