private const string JOYSTICK_NAME = "HeroJoystick";
public AnimationClip Ani_Idle;
public AnimationClip Ani_Runing;
private CharacterController CC;//角色控制器
//角色控制器重力
private float _FloGravity = 1F; //模拟重力
//移动速度
public float FloHeroMovingSpeed = 5f;
void Start()
{
//得到角色控制器
CC = this.GetComponent<CharacterController>();
}
/// <summary>
///事件注册
/// </summary>
void OnEnable()
{
EasyJoystick.On_JoystickMove += OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
}
void OnDisable()
{
EasyJoystick.On_JoystickMove -= OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;
}
void OnDestroy()
{
EasyJoystick.On_JoystickMove -= OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;
}
//移动摇杆中
void OnJoystickMove(MovingJoystick move)
{
if (move.joystickName != JOYSTICK_NAME)
{
return;
}
//获取摇杆中心偏移的坐标
float joyPositionX = move.joystickAxis.x;
float joyPositionY = move.joystickAxis.y;
if (joyPositionY != 0 || joyPositionX != 0)
{
//设置角色的朝向(朝向当前坐标+摇杆偏移量)
transform.LookAt(new Vector3(transform.position.x -joyPositionX, transform.position.y, transform.position.z - joyPositionY));
//移动玩家的位置(按朝向位置移动)
//transform.Translate(Vector3.forward * Time.deltaTime * 5);
Vector3 movement =transform.forward * Time.deltaTime * FloHeroMovingSpeed;
//模拟重力
movement.y -= _FloGravity;
CC.Move(movement);
//播放奔跑动画
GetComponent<Animation>().CrossFade(Ani_Runing.name);
}
}
//移动摇杆结束
void OnJoystickMoveEnd(MovingJoystick move)
{
//停止时,角色恢复idle
if (move.joystickName == JOYSTICK_NAME)
{
GetComponent<Animation>().CrossFade(Ani_Idle.name);
}
}