using System.Collections; using System.Collections.Generic; using UnityEngine; namespace MuHua { /// /// 移动 - 运动 /// public class KMove : IKinesis { /// 基础角色 public readonly MCharacter character; /// 移动速度 public float moveSpeed = 2; /// 加速度 public float acceleration = 15; /// 移动方向 public Vector2 moveDirection; /// 初始位置 public Vector3 position; /// 初始角度 public Vector3 eulerAngles; /// 是否旋转 public bool isRotation; /// 初始设置 public bool isInitial = false; /// 变换器 public Transform transform => character.transform; /// 动画器 public Animator animator => character.animator; /// 运动器 public Movement movement => character.movement; public KMove(MCharacter character, Vector2 moveDirection, bool isRotation) { this.character = character; this.moveDirection = moveDirection; this.isRotation = isRotation; } public void Settings(float moveSpeed, float acceleration) { this.moveSpeed = moveSpeed; this.acceleration = acceleration; } public void Settings(Vector3 position, Vector3 eulerAngles) { this.position = position; this.eulerAngles = eulerAngles; isInitial = true; } public override bool Transition(IKinesis kinesis) { return true; } public override void StartKinesis() { movement.Move(moveDirection, moveSpeed, acceleration, isRotation); if (!isInitial) { return; } transform.position = position; transform.eulerAngles = eulerAngles; } public override void UpdateKinesis() { // 更新动画器 animator.SetFloat("MoveSpeed", movement.Speed); // 移动结束 if (movement.Speed == 0) { character.Transition(new KIdle()); } } public override void FinishKinesis() { // throw new System.NotImplementedException(); } public override void AnimationExit() { // throw new System.NotImplementedException(); } } }