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();
}
}
}