From a86e32c89e92205f501976661ed2fb47b2b770b8 Mon Sep 17 00:00:00 2001 From: MuHua-123 <2960208585@qq.com> Date: Mon, 10 Mar 2025 23:44:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=92=E8=89=B2=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AnimalMachine/AnimalChasingState.cs | 44 +++--- .../AnimalMachine/AnimalEatingState.cs | 48 +++---- .../AnimalMachine/AnimalIdleState.cs | 34 ++--- .../AnimalMachine/AnimalMachine.cs | 128 +++++++++--------- .../AnimalMachine/AnimalRoamingState.cs | 40 +++--- .../Character/Runtime/Character/Character.cs | 15 -- .../Runtime/Character/FSM/Machine.cs | 33 ----- .../Runtime/Character/FSM/MachineState.cs | 23 ---- .../Character/Runtime/Character/ICharacter.cs | 21 +++ .../{Character.cs.meta => ICharacter.cs.meta} | 0 .../Character/Runtime/Character/IMachine.cs | 33 +++++ .../{FSM/Machine.cs.meta => IMachine.cs.meta} | 0 .../Runtime/Character/IMachineState.cs | 23 ++++ ...ineState.cs.meta => IMachineState.cs.meta} | 0 .../Character/Runtime/Character/Ikinesis.cs | 25 ++++ .../Runtime/Character/Ikinesis.cs.meta | 11 ++ .../Runtime/Character/PlayerController.cs | 21 --- Packages/Character/Runtime/Component.meta | 8 ++ .../{ => Component}/EffectsLaunch.meta | 0 .../EffectsLaunch/EffectsLaunch.cs | 0 .../EffectsLaunch/EffectsLaunch.cs.meta | 0 .../Runtime/{ => Component}/Movement.meta | 0 .../Runtime/Component/Movement/Movement.cs | 22 +++ .../{ => Component}/Movement/Movement.cs.meta | 0 .../Movement/MovementNavigation.cs | 0 .../Movement/MovementNavigation.cs.meta | 0 .../Component/Movement/MovementStandard.cs | 62 +++++++++ .../Movement/MovementStandard.cs.meta | 0 .../Runtime/{ => Component}/VisualField.meta | 0 .../VisualField/VisualField.cs | 0 .../VisualField/VisualField.cs.meta | 0 .../VisualField/VisualFieldStandard.cs | 0 .../VisualField/VisualFieldStandard.cs.meta | 0 .../Character/Runtime/Movement/Movement.cs | 19 --- .../Runtime/Movement/MovementStandard.cs | 52 ------- .../Character/Runtime/MuHua.Character.asmdef | 17 ++- .../{Character/FSM.meta => Player.meta} | 0 .../Runtime/Player/PlayerCharacter.cs | 20 +++ .../Runtime/Player/PlayerCharacter.cs.meta | 11 ++ .../Runtime/Player/PlayerController.cs | 43 ++++++ .../PlayerController.cs.meta | 0 .../Character/Runtime/Player/kinesis.meta | 8 ++ .../Player/kinesis/PlayerKinesisAttack.cs | 16 +++ .../kinesis/PlayerKinesisAttack.cs.meta | 11 ++ .../Player/kinesis/PlayerKinesisIdle.cs | 10 ++ .../Player/kinesis/PlayerKinesisIdle.cs.meta | 11 ++ .../Player/kinesis/PlayerKinesisMove.cs | 31 +++++ .../Player/kinesis/PlayerKinesisMove.cs.meta | 11 ++ Packages/manifest.json | 1 + Packages/packages-lock.json | 9 ++ ProjectSettings/ProjectSettings.asset | 2 +- 51 files changed, 550 insertions(+), 313 deletions(-) delete mode 100644 Packages/Character/Runtime/Character/Character.cs delete mode 100644 Packages/Character/Runtime/Character/FSM/Machine.cs delete mode 100644 Packages/Character/Runtime/Character/FSM/MachineState.cs create mode 100644 Packages/Character/Runtime/Character/ICharacter.cs rename Packages/Character/Runtime/Character/{Character.cs.meta => ICharacter.cs.meta} (100%) create mode 100644 Packages/Character/Runtime/Character/IMachine.cs rename Packages/Character/Runtime/Character/{FSM/Machine.cs.meta => IMachine.cs.meta} (100%) create mode 100644 Packages/Character/Runtime/Character/IMachineState.cs rename Packages/Character/Runtime/Character/{FSM/MachineState.cs.meta => IMachineState.cs.meta} (100%) create mode 100644 Packages/Character/Runtime/Character/Ikinesis.cs create mode 100644 Packages/Character/Runtime/Character/Ikinesis.cs.meta delete mode 100644 Packages/Character/Runtime/Character/PlayerController.cs create mode 100644 Packages/Character/Runtime/Component.meta rename Packages/Character/Runtime/{ => Component}/EffectsLaunch.meta (100%) rename Packages/Character/Runtime/{ => Component}/EffectsLaunch/EffectsLaunch.cs (100%) rename Packages/Character/Runtime/{ => Component}/EffectsLaunch/EffectsLaunch.cs.meta (100%) rename Packages/Character/Runtime/{ => Component}/Movement.meta (100%) create mode 100644 Packages/Character/Runtime/Component/Movement/Movement.cs rename Packages/Character/Runtime/{ => Component}/Movement/Movement.cs.meta (100%) rename Packages/Character/Runtime/{ => Component}/Movement/MovementNavigation.cs (100%) rename Packages/Character/Runtime/{ => Component}/Movement/MovementNavigation.cs.meta (100%) create mode 100644 Packages/Character/Runtime/Component/Movement/MovementStandard.cs rename Packages/Character/Runtime/{ => Component}/Movement/MovementStandard.cs.meta (100%) rename Packages/Character/Runtime/{ => Component}/VisualField.meta (100%) rename Packages/Character/Runtime/{ => Component}/VisualField/VisualField.cs (100%) rename Packages/Character/Runtime/{ => Component}/VisualField/VisualField.cs.meta (100%) rename Packages/Character/Runtime/{ => Component}/VisualField/VisualFieldStandard.cs (100%) rename Packages/Character/Runtime/{ => Component}/VisualField/VisualFieldStandard.cs.meta (100%) delete mode 100644 Packages/Character/Runtime/Movement/Movement.cs delete mode 100644 Packages/Character/Runtime/Movement/MovementStandard.cs rename Packages/Character/Runtime/{Character/FSM.meta => Player.meta} (100%) create mode 100644 Packages/Character/Runtime/Player/PlayerCharacter.cs create mode 100644 Packages/Character/Runtime/Player/PlayerCharacter.cs.meta create mode 100644 Packages/Character/Runtime/Player/PlayerController.cs rename Packages/Character/Runtime/{Character => Player}/PlayerController.cs.meta (100%) create mode 100644 Packages/Character/Runtime/Player/kinesis.meta create mode 100644 Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs create mode 100644 Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs.meta create mode 100644 Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs create mode 100644 Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs.meta create mode 100644 Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs create mode 100644 Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs.meta diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs index 18a8184..003e54c 100644 --- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs +++ b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs @@ -3,30 +3,30 @@ using System.Collections.Generic; using UnityEngine; using MuHua; -public class AnimalChasingState : MachineState where T : Component { - public T target; - public string ToDefault = "Eating"; - public readonly AnimalMachine animal; - public AnimalChasingState(Machine machine) : base(machine) => animal = machine as AnimalMachine; +// public class AnimalChasingState : IStateMachine where T : Component { +// public T target; +// public string ToDefault = "Eating"; +// public readonly AnimalMachine animal; +// public AnimalChasingState(StateMachine machine) : base(machine) => animal = machine as AnimalMachine; - public override void Enter() { - bool valid = animal.Find(out target); - if (!valid) { animal.ChangeState("Idle"); } - } +// public override void Enter() { +// bool valid = animal.Find(out target); +// if (!valid) { animal.ChangeState("Idle"); } +// } - public override void Exit() { - animal.movement.StopMoving(); - animal.animator.SetFloat("MoveSpeed", 0); - } +// public override void Exit() { +// animal.movement.StopMoving(); +// animal.animator.SetFloat("MoveSpeed", 0); +// } - public override void Trigger() { +// public override void Trigger() { - } +// } - public override void Update() { - if (target == null) { animal.ChangeState(ToDefault); return; } - bool complete = animal.movement.UpdateMove(target.transform.position); - animal.animator.SetFloat("MoveSpeed", animal.movement.currentSpeed); - if (complete) { animal.ChangeState(ToDefault); } - } -} +// public override void Update() { +// if (target == null) { animal.ChangeState(ToDefault); return; } +// bool complete = animal.movement.UpdateMove(target.transform.position); +// animal.animator.SetFloat("MoveSpeed", animal.movement.currentSpeed); +// if (complete) { animal.ChangeState(ToDefault); } +// } +// } diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs index 96dda00..c8e58b7 100644 --- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs +++ b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs @@ -3,37 +3,37 @@ using System.Collections.Generic; using UnityEngine; using MuHua; -public class AnimalEatingState : MachineState { - public string ToDefault = "Idle"; +// public class AnimalEatingState : IStateMachine { +// public string ToDefault = "Idle"; - private AnimalFood target; +// private AnimalFood target; - public AnimalMachine animal; - public AnimalEatingState(Machine machine) : base(machine) => animal = machine as AnimalMachine; +// public AnimalMachine animal; +// public AnimalEatingState(StateMachine machine) : base(machine) => animal = machine as AnimalMachine; - public override void Enter() { - if (!animal.Find(out target)) { Exit(); return; } +// public override void Enter() { +// if (!animal.Find(out target)) { Exit(); return; } - // 判断target距离是否小于0.3f - float distance = Vector3.Distance(animal.transform.position, target.transform.position); - if (distance >= 0.1f) { Exit(); return; } +// // 判断target距离是否小于0.3f +// float distance = Vector3.Distance(animal.transform.position, target.transform.position); +// if (distance >= 0.1f) { Exit(); return; } - animal.animator.SetBool("Eating", true); - } +// animal.animator.SetBool("Eating", true); +// } - public override void Exit() { - animal.animator.SetBool("Eating", false); - } +// public override void Exit() { +// animal.animator.SetBool("Eating", false); +// } - public override void Trigger() { - animal.hunger += target.nutritionValue; - animal.hunger = Mathf.Clamp(animal.hunger, 0, animal.maxHunger); - GameObject.Destroy(target.gameObject); +// public override void Trigger() { +// animal.hunger += target.nutritionValue; +// animal.hunger = Mathf.Clamp(animal.hunger, 0, animal.maxHunger); +// GameObject.Destroy(target.gameObject); - animal.ChangeState(ToDefault); - } +// animal.ChangeState(ToDefault); +// } - public override void Update() { +// public override void Update() { - } -} +// } +// } diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs index 120be5a..0524fb4 100644 --- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs +++ b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs @@ -3,28 +3,28 @@ using System.Collections.Generic; using UnityEngine; using MuHua; -public class AnimalIdleState : MachineState { - public string ToDefault = "Roaming"; +// public class AnimalIdleState : IStateMachine { +// public string ToDefault = "Roaming"; - private float idleTime; +// private float idleTime; - public AnimalMachine animal; - public AnimalIdleState(Machine machine) : base(machine) => animal = machine as AnimalMachine; +// public AnimalMachine animal; +// public AnimalIdleState(StateMachine machine) : base(machine) => animal = machine as AnimalMachine; - public override void Enter() { - idleTime = Random.Range(3.0f, 5.0f); - } +// public override void Enter() { +// idleTime = Random.Range(3.0f, 5.0f); +// } - public override void Exit() { +// public override void Exit() { - } +// } - public override void Trigger() { +// public override void Trigger() { - } +// } - public override void Update() { - idleTime -= Time.deltaTime; - if (idleTime <= 0) { animal.ChangeState(ToDefault); } - } -} +// public override void Update() { +// idleTime -= Time.deltaTime; +// if (idleTime <= 0) { animal.ChangeState(ToDefault); } +// } +// } diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs index 633e4c4..b89e198 100644 --- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs +++ b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs @@ -3,79 +3,79 @@ using System.Collections.Generic; using UnityEngine; using MuHua; -public class AnimalMachine : Machine { - [Header("饥饿度参数")] - public float hunger = 100.0f; // 饥饿度,从0到100 - public float maxHunger = 100.0f; // 最大饥饿度 - public float searchRadius = 10.0f; // 搜索食物的半径 +// public class AnimalMachine : StateMachine { +// [Header("饥饿度参数")] +// public float hunger = 100.0f; // 饥饿度,从0到100 +// public float maxHunger = 100.0f; // 最大饥饿度 +// public float searchRadius = 10.0f; // 搜索食物的半径 - [Header("控制组件")] - public Movement movement; // 运动控制器 - public Animator animator; // 动画控制器 +// [Header("控制组件")] +// public Movement movement; // 运动控制器 +// public Animator animator; // 动画控制器 - private float hungerTimer = 0.0f; // 计时器 - private float chasingCooldownTimer = 0.0f; // 追逐状态冷却计时器 - private const float chasingCooldown = 5.0f; // 追逐状态冷却时间 +// private float hungerTimer = 0.0f; // 计时器 +// private float chasingCooldownTimer = 0.0f; // 追逐状态冷却计时器 +// private const float chasingCooldown = 5.0f; // 追逐状态冷却时间 - protected override void InitializeStates() { - RegisterState("Idle", new AnimalIdleState(this)); - RegisterState("Roaming", new AnimalRoamingState(this)); - RegisterState("Chasing", new AnimalChasingState(this)); - RegisterState("Eating", new AnimalEatingState(this)); +// protected override void InitializeStates() { +// RegisterState("Idle", new AnimalIdleState(this)); +// RegisterState("Roaming", new AnimalRoamingState(this)); +// RegisterState("Chasing", new AnimalChasingState(this)); +// RegisterState("Eating", new AnimalEatingState(this)); - ChangeState("Idle"); - } +// ChangeState("Idle"); +// } - protected override void Update() { - base.Update(); +// protected override void Update() { +// base.Update(); - // 更新计时器 - hungerTimer += Time.deltaTime; - chasingCooldownTimer += Time.deltaTime; +// // 更新计时器 +// hungerTimer += Time.deltaTime; +// chasingCooldownTimer += Time.deltaTime; - if (hungerTimer >= 1.0f) { ConsumeHunger(); } - } +// if (hungerTimer >= 1.0f) { ConsumeHunger(); } +// } - public virtual void ConsumeHunger() { - // 重置计时器 - hungerTimer = 0.0f; - // 每次消耗1点饥饿度 - hunger -= 1.0f; - if (hunger < 0.0f) { hunger = 0.0f; } +// public virtual void ConsumeHunger() { +// // 重置计时器 +// hungerTimer = 0.0f; +// // 每次消耗1点饥饿度 +// hunger -= 1.0f; +// if (hunger < 0.0f) { hunger = 0.0f; } - // 如果饥饿度低于最大饥饿度的70%,有50%的概率触发Chasing状态 - // 如果饥饿度低于最大饥饿度的30%,有90%的概率触发Chasing状态 - float foraging = hunger < maxHunger * 0.3f ? 0.9f : 0.5f; - bool valid = hunger < maxHunger * 0.7f && Random.value < foraging; +// // 如果饥饿度低于最大饥饿度的70%,有50%的概率触发Chasing状态 +// // 如果饥饿度低于最大饥饿度的30%,有90%的概率触发Chasing状态 +// float foraging = hunger < maxHunger * 0.3f ? 0.9f : 0.5f; +// bool valid = hunger < maxHunger * 0.7f && Random.value < foraging; - // 如果触发Chasing状态,且冷却时间已过,切换到Chasing状态 - if (valid && chasingCooldownTimer >= chasingCooldown) { - ChangeState("Chasing"); - chasingCooldownTimer = 0.0f; // 重置冷却计时器 - } - } +// // 如果触发Chasing状态,且冷却时间已过,切换到Chasing状态 +// if (valid && chasingCooldownTimer >= chasingCooldown) { +// ChangeState("Chasing"); +// chasingCooldownTimer = 0.0f; // 重置冷却计时器 +// } +// } - // 从指定范围内查找指定类型的组件 - public virtual bool Find(out T value) where T : Component { - Collider[] colliders = Physics.OverlapSphere(transform.position, searchRadius); - foreach (Collider collider in colliders) { - T component = collider.GetComponent(); - if (component != null) { - value = component; - return true; - } - } - value = null; - return false; - } +// // 从指定范围内查找指定类型的组件 +// public virtual bool Find(out T value) where T : Component { +// Collider[] colliders = Physics.OverlapSphere(transform.position, searchRadius); +// foreach (Collider collider in colliders) { +// T component = collider.GetComponent(); +// if (component != null) { +// value = component; +// return true; +// } +// } +// value = null; +// return false; +// } - public override bool UpdateMove(Vector3 position) { - return movement.UpdateMove(position); - } - public override void AnimationTrigger(string value) { - throw new System.NotImplementedException(); - } - public override void AnimationEnd() { - throw new System.NotImplementedException(); - } -} +// // public override bool UpdateMove(Vector3 position) { +// // return movement.UpdateMove(position); +// // } +// // public override void AnimationTrigger(string value) { +// // throw new System.NotImplementedException(); +// // } +// // public override void AnimationEnd() { +// // throw new System.NotImplementedException(); +// // } +// } diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs index f0cc3c6..7e5c086 100644 --- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs +++ b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs @@ -3,28 +3,28 @@ using System.Collections.Generic; using UnityEngine; using MuHua; -public class AnimalRoamingState : MachineState { - public Vector3 targetPosition; - public string ToDefault = "Idle"; - public readonly AnimalMachine animal; - public AnimalRoamingState(Machine machine) : base(machine) => animal = machine as AnimalMachine; +// public class AnimalRoamingState : IStateMachine { +// public Vector3 targetPosition; +// public string ToDefault = "Idle"; +// public readonly AnimalMachine animal; +// public AnimalRoamingState(StateMachine machine) : base(machine) => animal = machine as AnimalMachine; - public override void Enter() { - targetPosition = animal.movement.RandomTargetPosition(); - } +// public override void Enter() { +// targetPosition = animal.movement.RandomTargetPosition(); +// } - public override void Exit() { - animal.movement.StopMoving(); - animal.animator.SetFloat("MoveSpeed", 0); - } +// public override void Exit() { +// animal.movement.StopMoving(); +// animal.animator.SetFloat("MoveSpeed", 0); +// } - public override void Trigger() { +// public override void Trigger() { - } +// } - public override void Update() { - bool complete = animal.movement.UpdateMove(targetPosition); - animal.animator.SetFloat("MoveSpeed", animal.movement.currentSpeed); - if (complete) { animal.ChangeState(ToDefault); } - } -} +// public override void Update() { +// bool complete = animal.movement.UpdateMove(targetPosition); +// animal.animator.SetFloat("MoveSpeed", animal.movement.currentSpeed); +// if (complete) { animal.ChangeState(ToDefault); } +// } +// } diff --git a/Packages/Character/Runtime/Character/Character.cs b/Packages/Character/Runtime/Character/Character.cs deleted file mode 100644 index 71677cf..0000000 --- a/Packages/Character/Runtime/Character/Character.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace MuHua { - public abstract class Character : MonoBehaviour { - /// 更新移动 - public abstract bool UpdateMove(Vector3 position); - - /// 动画触发 - public abstract void AnimationTrigger(string value); - /// 动画结束 - public abstract void AnimationEnd(); - } -} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/FSM/Machine.cs b/Packages/Character/Runtime/Character/FSM/Machine.cs deleted file mode 100644 index 61270d0..0000000 --- a/Packages/Character/Runtime/Character/FSM/Machine.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace MuHua { - /// - /// 有限状态机 - /// - public abstract class Machine : Character { - protected MachineState currentState; - protected Dictionary states = new Dictionary(); - - protected virtual void Start() => InitializeStates(); - protected virtual void Update() => currentState?.Update(); - - #region 状态机功能 - protected abstract void InitializeStates(); - protected virtual void RegisterState(string stateType, MachineState state) { - if (!states.ContainsKey(stateType)) { states.Add(stateType, state); } - } - public virtual void ChangeState(string stateType) { - if (states.ContainsKey(stateType)) { - currentState?.Exit(); - currentState = states[stateType]; - currentState.Enter(); - } - else { - Debug.LogWarning($"State {stateType} is not registered."); - } - } - #endregion - } -} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/FSM/MachineState.cs b/Packages/Character/Runtime/Character/FSM/MachineState.cs deleted file mode 100644 index f301b9a..0000000 --- a/Packages/Character/Runtime/Character/FSM/MachineState.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace MuHua { - /// - /// 状态接口 - /// - public abstract class MachineState { - protected readonly Machine machine; - - public MachineState(Machine machine) => this.machine = machine; - - /// 进入状态 - public abstract void Enter(); - /// 更新状态 - public abstract void Update(); - /// 退出状态 - public abstract void Exit(); - /// 触发状态 - public abstract void Trigger(); - } -} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/ICharacter.cs b/Packages/Character/Runtime/Character/ICharacter.cs new file mode 100644 index 0000000..b51c477 --- /dev/null +++ b/Packages/Character/Runtime/Character/ICharacter.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + public abstract class ICharacter : MonoBehaviour { + public Ikinesis kinesis; + + public void Update() => kinesis.Update(); + + /// 更新动作 + public abstract void Updatekinesis(Ikinesis kinesis); + + /// 触发动画特效 + public virtual void AnimationEffects() => kinesis.AnimationEffects(); + /// 动画结束 + public virtual void AnimationEnd() => kinesis.AnimationEnd(); + /// 动画退出 + public virtual void AnimationExit() => kinesis.AnimationExit(); + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/Character.cs.meta b/Packages/Character/Runtime/Character/ICharacter.cs.meta similarity index 100% rename from Packages/Character/Runtime/Character/Character.cs.meta rename to Packages/Character/Runtime/Character/ICharacter.cs.meta diff --git a/Packages/Character/Runtime/Character/IMachine.cs b/Packages/Character/Runtime/Character/IMachine.cs new file mode 100644 index 0000000..4667d92 --- /dev/null +++ b/Packages/Character/Runtime/Character/IMachine.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 有限状态机 + /// + public abstract class IMachine : MonoBehaviour { + protected IMachineState currentState; + protected Dictionary states = new Dictionary(); + + protected virtual void Start() => InitializeStates(); + protected virtual void Update() => currentState?.Update(); + + #region 状态机功能 + protected abstract void InitializeStates(); + protected virtual void RegisterState(string stateType, IMachineState state) { + if (!states.ContainsKey(stateType)) { states.Add(stateType, state); } + } + public virtual void ChangeState(string stateType) { + if (states.ContainsKey(stateType)) { + currentState?.Exit(); + currentState = states[stateType]; + currentState.Enter(); + } + else { + Debug.LogWarning($"State {stateType} is not registered."); + } + } + #endregion + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/FSM/Machine.cs.meta b/Packages/Character/Runtime/Character/IMachine.cs.meta similarity index 100% rename from Packages/Character/Runtime/Character/FSM/Machine.cs.meta rename to Packages/Character/Runtime/Character/IMachine.cs.meta diff --git a/Packages/Character/Runtime/Character/IMachineState.cs b/Packages/Character/Runtime/Character/IMachineState.cs new file mode 100644 index 0000000..0258335 --- /dev/null +++ b/Packages/Character/Runtime/Character/IMachineState.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 状态接口 + /// + public abstract class IMachineState { + protected readonly IMachine machine; + + public IMachineState(IMachine machine) => this.machine = machine; + + /// 进入状态 + public abstract void Enter(); + /// 更新状态 + public abstract void Update(); + /// 退出状态 + public abstract void Exit(); + /// 触发状态 + public abstract void Trigger(); + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/FSM/MachineState.cs.meta b/Packages/Character/Runtime/Character/IMachineState.cs.meta similarity index 100% rename from Packages/Character/Runtime/Character/FSM/MachineState.cs.meta rename to Packages/Character/Runtime/Character/IMachineState.cs.meta diff --git a/Packages/Character/Runtime/Character/Ikinesis.cs b/Packages/Character/Runtime/Character/Ikinesis.cs new file mode 100644 index 0000000..ccec4ae --- /dev/null +++ b/Packages/Character/Runtime/Character/Ikinesis.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 角色动作 + /// + public abstract class Ikinesis { + /// 动画名字 + public abstract string AnimName { get; } + /// 是否可以打断 + public abstract bool Interrupt { get; } + + /// 持续更新 + public virtual void Update() { } + + /// 触发动画特效 + public virtual void AnimationEffects() { } + /// 动画结束 + public virtual void AnimationEnd() { } + /// 动画退出 + public virtual void AnimationExit() { } + } +} diff --git a/Packages/Character/Runtime/Character/Ikinesis.cs.meta b/Packages/Character/Runtime/Character/Ikinesis.cs.meta new file mode 100644 index 0000000..923f771 --- /dev/null +++ b/Packages/Character/Runtime/Character/Ikinesis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e096ab8673cda9e42be867d97aae83eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Character/Runtime/Character/PlayerController.cs b/Packages/Character/Runtime/Character/PlayerController.cs deleted file mode 100644 index 773b4a1..0000000 --- a/Packages/Character/Runtime/Character/PlayerController.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace MuHua { - public class PlayerController : Character { - public Movement movement; // 运动控制器 - public Animator animator; // 动画控制器 - - public override bool UpdateMove(Vector3 position) { - return movement.UpdateMove(position); - } - - public override void AnimationTrigger(string value) { - throw new System.NotImplementedException(); - } - public override void AnimationEnd() { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/Packages/Character/Runtime/Component.meta b/Packages/Character/Runtime/Component.meta new file mode 100644 index 0000000..a1a9cf9 --- /dev/null +++ b/Packages/Character/Runtime/Component.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf7a593380ccdea49bd7b165329298e2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Character/Runtime/EffectsLaunch.meta b/Packages/Character/Runtime/Component/EffectsLaunch.meta similarity index 100% rename from Packages/Character/Runtime/EffectsLaunch.meta rename to Packages/Character/Runtime/Component/EffectsLaunch.meta diff --git a/Packages/Character/Runtime/EffectsLaunch/EffectsLaunch.cs b/Packages/Character/Runtime/Component/EffectsLaunch/EffectsLaunch.cs similarity index 100% rename from Packages/Character/Runtime/EffectsLaunch/EffectsLaunch.cs rename to Packages/Character/Runtime/Component/EffectsLaunch/EffectsLaunch.cs diff --git a/Packages/Character/Runtime/EffectsLaunch/EffectsLaunch.cs.meta b/Packages/Character/Runtime/Component/EffectsLaunch/EffectsLaunch.cs.meta similarity index 100% rename from Packages/Character/Runtime/EffectsLaunch/EffectsLaunch.cs.meta rename to Packages/Character/Runtime/Component/EffectsLaunch/EffectsLaunch.cs.meta diff --git a/Packages/Character/Runtime/Movement.meta b/Packages/Character/Runtime/Component/Movement.meta similarity index 100% rename from Packages/Character/Runtime/Movement.meta rename to Packages/Character/Runtime/Component/Movement.meta diff --git a/Packages/Character/Runtime/Component/Movement/Movement.cs b/Packages/Character/Runtime/Component/Movement/Movement.cs new file mode 100644 index 0000000..0b49eb6 --- /dev/null +++ b/Packages/Character/Runtime/Component/Movement/Movement.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 运动控制器 + /// + public abstract class Movement : MonoBehaviour { + /// 当前速度 + public abstract float CurrentSpeed { get; } + /// 当前方向 + public abstract Vector3 Direction { get; } + + /// 更新移动 + public abstract bool UpdateMove(Vector3 position); + /// 获取随机位置 + public abstract Vector3 RandomTargetPosition(); + /// 停止移动 + public abstract void StopMoving(); + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Movement/Movement.cs.meta b/Packages/Character/Runtime/Component/Movement/Movement.cs.meta similarity index 100% rename from Packages/Character/Runtime/Movement/Movement.cs.meta rename to Packages/Character/Runtime/Component/Movement/Movement.cs.meta diff --git a/Packages/Character/Runtime/Movement/MovementNavigation.cs b/Packages/Character/Runtime/Component/Movement/MovementNavigation.cs similarity index 100% rename from Packages/Character/Runtime/Movement/MovementNavigation.cs rename to Packages/Character/Runtime/Component/Movement/MovementNavigation.cs diff --git a/Packages/Character/Runtime/Movement/MovementNavigation.cs.meta b/Packages/Character/Runtime/Component/Movement/MovementNavigation.cs.meta similarity index 100% rename from Packages/Character/Runtime/Movement/MovementNavigation.cs.meta rename to Packages/Character/Runtime/Component/Movement/MovementNavigation.cs.meta diff --git a/Packages/Character/Runtime/Component/Movement/MovementStandard.cs b/Packages/Character/Runtime/Component/Movement/MovementStandard.cs new file mode 100644 index 0000000..3bbd77d --- /dev/null +++ b/Packages/Character/Runtime/Component/Movement/MovementStandard.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 标准运动实现 + /// + public class MovementStandard : Movement { + public float moveSpeed = 5.0f; // 最大移动速度 + public float acceleration = 20.0f; // 加速度 + public float steeringSpeed = 180.0f; // 加速度 + public float currentSpeed = 0.0f; // 当前速度 + public Vector3 direction; // 面向 + + public override float CurrentSpeed => currentSpeed; + + public override Vector3 Direction => direction; + + public override bool UpdateMove(Vector3 position) { + // 计算相对于世界坐标系的移动方向 + Vector3 moveDirection = (position - transform.position).normalized; + float distance = Vector3.Distance(transform.position, position); + + // 平滑加速和减速 + currentSpeed = distance > 0.2f + ? Mathf.MoveTowards(currentSpeed, moveSpeed, acceleration * Time.deltaTime) + : Mathf.MoveTowards(currentSpeed, 0, acceleration * Time.deltaTime); + + // 移动玩家 + transform.Translate(moveDirection * currentSpeed * Time.deltaTime, Space.World); + + // 如果有移动输入,则更新玩家的朝向 + if (distance != 0) { + Quaternion toRotation = Quaternion.LookRotation(moveDirection, Vector3.up); + transform.rotation = Quaternion.RotateTowards(transform.rotation, toRotation, moveSpeed * Time.deltaTime * steeringSpeed); + } + + // 计算转向向量 + Vector3 localMoveDirection = transform.InverseTransformDirection(moveDirection * currentSpeed); + localMoveDirection = localMoveDirection.normalized; + // 对localMoveDirection的x和z进行分类处理 + float moveX = Convert.ToInt32(localMoveDirection.x); + float moveZ = Convert.ToInt32(localMoveDirection.z); + direction = new Vector3(moveX, 0, moveZ); + + // 如果到达目标位置,返回 true + distance = Vector3.Distance(transform.position, position); + + return distance < 0.05f; + } + public override Vector3 RandomTargetPosition() { + float randomX = UnityEngine.Random.Range(-10.0f, 10.0f); + float randomZ = UnityEngine.Random.Range(-10.0f, 10.0f); + return transform.position + new Vector3(randomX, 0, randomZ); + } + public override void StopMoving() { + currentSpeed = 0; + } + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Movement/MovementStandard.cs.meta b/Packages/Character/Runtime/Component/Movement/MovementStandard.cs.meta similarity index 100% rename from Packages/Character/Runtime/Movement/MovementStandard.cs.meta rename to Packages/Character/Runtime/Component/Movement/MovementStandard.cs.meta diff --git a/Packages/Character/Runtime/VisualField.meta b/Packages/Character/Runtime/Component/VisualField.meta similarity index 100% rename from Packages/Character/Runtime/VisualField.meta rename to Packages/Character/Runtime/Component/VisualField.meta diff --git a/Packages/Character/Runtime/VisualField/VisualField.cs b/Packages/Character/Runtime/Component/VisualField/VisualField.cs similarity index 100% rename from Packages/Character/Runtime/VisualField/VisualField.cs rename to Packages/Character/Runtime/Component/VisualField/VisualField.cs diff --git a/Packages/Character/Runtime/VisualField/VisualField.cs.meta b/Packages/Character/Runtime/Component/VisualField/VisualField.cs.meta similarity index 100% rename from Packages/Character/Runtime/VisualField/VisualField.cs.meta rename to Packages/Character/Runtime/Component/VisualField/VisualField.cs.meta diff --git a/Packages/Character/Runtime/VisualField/VisualFieldStandard.cs b/Packages/Character/Runtime/Component/VisualField/VisualFieldStandard.cs similarity index 100% rename from Packages/Character/Runtime/VisualField/VisualFieldStandard.cs rename to Packages/Character/Runtime/Component/VisualField/VisualFieldStandard.cs diff --git a/Packages/Character/Runtime/VisualField/VisualFieldStandard.cs.meta b/Packages/Character/Runtime/Component/VisualField/VisualFieldStandard.cs.meta similarity index 100% rename from Packages/Character/Runtime/VisualField/VisualFieldStandard.cs.meta rename to Packages/Character/Runtime/Component/VisualField/VisualFieldStandard.cs.meta diff --git a/Packages/Character/Runtime/Movement/Movement.cs b/Packages/Character/Runtime/Movement/Movement.cs deleted file mode 100644 index 518b1e1..0000000 --- a/Packages/Character/Runtime/Movement/Movement.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace MuHua { - /// - /// 运动控制器 - /// - public abstract class Movement : MonoBehaviour { - public float moveSpeed = 5.0f; // 最大移动速度 - public float acceleration = 20.0f; // 加速度 - public float currentSpeed = 0.0f; // 当前速度 - public Vector3 front; // 面向 - - public abstract bool UpdateMove(Vector3 position); - public abstract Vector3 RandomTargetPosition(); - public abstract void StopMoving(); - } -} \ No newline at end of file diff --git a/Packages/Character/Runtime/Movement/MovementStandard.cs b/Packages/Character/Runtime/Movement/MovementStandard.cs deleted file mode 100644 index 630c2c4..0000000 --- a/Packages/Character/Runtime/Movement/MovementStandard.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace MuHua { - /// - /// 标准运动实现 - /// - public class MovementStandard : Movement { - public override bool UpdateMove(Vector3 position) { - // 计算相对于世界坐标系的移动方向 - Vector3 moveDirection = (position - transform.position).normalized; - float distance = Vector3.Distance(transform.position, position); - - // 平滑加速和减速 - currentSpeed = distance > 0.2f - ? Mathf.MoveTowards(currentSpeed, moveSpeed, acceleration * Time.deltaTime) - : Mathf.MoveTowards(currentSpeed, 0, acceleration * Time.deltaTime); - - // 移动玩家 - transform.Translate(moveDirection * currentSpeed * Time.deltaTime, Space.World); - - // 如果有移动输入,则更新玩家的朝向 - if (distance != 0) { - Quaternion toRotation = Quaternion.LookRotation(moveDirection, Vector3.up); - transform.rotation = Quaternion.RotateTowards(transform.rotation, toRotation, moveSpeed * Time.deltaTime * 100); - } - - // 计算转向向量 - Vector3 localMoveDirection = transform.InverseTransformDirection(moveDirection * currentSpeed); - localMoveDirection = localMoveDirection.normalized; - // 对localMoveDirection的x和z进行分类处理 - float moveX = Convert.ToInt32(localMoveDirection.x); - float moveZ = Convert.ToInt32(localMoveDirection.z); - front = new Vector3(moveX, 0, moveZ); - - // 如果到达目标位置,返回 true - distance = Vector3.Distance(transform.position, position); - - return distance < 0.05f; - } - public override Vector3 RandomTargetPosition() { - float randomX = UnityEngine.Random.Range(-10.0f, 10.0f); - float randomZ = UnityEngine.Random.Range(-10.0f, 10.0f); - return transform.position + new Vector3(randomX, 0, randomZ); - } - public override void StopMoving() { - currentSpeed = 0; - } - } -} \ No newline at end of file diff --git a/Packages/Character/Runtime/MuHua.Character.asmdef b/Packages/Character/Runtime/MuHua.Character.asmdef index 0de2626..d1e1e06 100644 --- a/Packages/Character/Runtime/MuHua.Character.asmdef +++ b/Packages/Character/Runtime/MuHua.Character.asmdef @@ -1,3 +1,16 @@ { - "name": "MuHua.Character" -} + "name": "MuHua.Character", + "rootNamespace": "", + "references": [ + "GUID:75469ad4d38634e559750d17036d5f7c" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/FSM.meta b/Packages/Character/Runtime/Player.meta similarity index 100% rename from Packages/Character/Runtime/Character/FSM.meta rename to Packages/Character/Runtime/Player.meta diff --git a/Packages/Character/Runtime/Player/PlayerCharacter.cs b/Packages/Character/Runtime/Player/PlayerCharacter.cs new file mode 100644 index 0000000..3cf6b5f --- /dev/null +++ b/Packages/Character/Runtime/Player/PlayerCharacter.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + public class PlayerCharacter : ICharacter { + public Animator animator; + public Movement movement; + + private void Awake() => kinesis = new PlayerKinesisIdle(); + + public override void Updatekinesis(Ikinesis kinesis) { + if (!this.kinesis.Interrupt) { return; } + this.kinesis = kinesis; + + //播放动画 + animator.Play(this.kinesis.AnimName); + } + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Player/PlayerCharacter.cs.meta b/Packages/Character/Runtime/Player/PlayerCharacter.cs.meta new file mode 100644 index 0000000..62892ff --- /dev/null +++ b/Packages/Character/Runtime/Player/PlayerCharacter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28866a6768c3e7441aa12caefd6217b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Character/Runtime/Player/PlayerController.cs b/Packages/Character/Runtime/Player/PlayerController.cs new file mode 100644 index 0000000..f2b6661 --- /dev/null +++ b/Packages/Character/Runtime/Player/PlayerController.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.InputSystem; + +namespace MuHua { + public class PlayerController : MonoBehaviour { + public Transform cameraController; // 相机对象 + public PlayerCharacter character; + + private Vector2 moveInput; + + private void Update() { + if (moveInput == Vector2.zero) { return; } + // 获取相机的前向和右向 + Vector3 cameraForward = cameraController.transform.forward; + Vector3 cameraRight = cameraController.transform.right; + + // 忽略相机的y轴 + cameraForward.y = 0; + cameraRight.y = 0; + + // 归一化向量 + cameraForward.Normalize(); + cameraRight.Normalize(); + + // 计算相对于相机的移动方向 + Vector3 moveDirection = (cameraForward * moveInput.y + cameraRight * moveInput.x).normalized; + + // 相对于玩家的移动方向 + Vector3 position = character.transform.position + new Vector3(moveDirection.x, 0, moveDirection.z) * 0.5f; + PlayerKinesisMove kinesis = new PlayerKinesisMove(position, character); + character.Updatekinesis(kinesis); + } + + #region 输入系统 + public void OnMove(InputValue inputValue) { + // 获取移动输入 + moveInput = inputValue.Get(); + } + #endregion + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Character/PlayerController.cs.meta b/Packages/Character/Runtime/Player/PlayerController.cs.meta similarity index 100% rename from Packages/Character/Runtime/Character/PlayerController.cs.meta rename to Packages/Character/Runtime/Player/PlayerController.cs.meta diff --git a/Packages/Character/Runtime/Player/kinesis.meta b/Packages/Character/Runtime/Player/kinesis.meta new file mode 100644 index 0000000..aaf0fb6 --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff61e8e49afe14548a5ec4151e14ab34 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs new file mode 100644 index 0000000..c8bd8ad --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + public class PlayerKinesisAttack : Ikinesis { + + public string animName = "Attack01"; + public bool animEnd = false; + + public override string AnimName => animName; + public override bool Interrupt => animEnd; + + public override void AnimationEnd() => animEnd = true; + } +} diff --git a/Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs.meta b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs.meta new file mode 100644 index 0000000..0f68ee0 --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisAttack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c910b7b6bba29d4381c9bb1d615ff77 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs new file mode 100644 index 0000000..084d87a --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + public class PlayerKinesisIdle : Ikinesis { + public override string AnimName => "Idle"; + public override bool Interrupt => true; + } +} \ No newline at end of file diff --git a/Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs.meta b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs.meta new file mode 100644 index 0000000..591d75c --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisIdle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 190d2b1706b7e0b42b9700950c4e2c18 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs new file mode 100644 index 0000000..6e1ee7e --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + public class PlayerKinesisMove : Ikinesis { + public Vector3 position; + public Movement movement; + public Animator animator; + public PlayerCharacter character; + public Ikinesis transition = new PlayerKinesisIdle(); + + public override string AnimName => "Move"; + public override bool Interrupt => true; + + public PlayerKinesisMove(Vector3 position, PlayerCharacter character) { + this.position = position; + this.movement = character.movement; + this.animator = character.animator; + this.character = character; + } + + public override void Update() { + if (movement.UpdateMove(position)) { character.Updatekinesis(transition); } + + animator.SetFloat("MoveSpeed", movement.CurrentSpeed); + animator.SetFloat("MoveX", movement.Direction.x); + animator.SetFloat("MoveZ", movement.Direction.z); + } + } +} diff --git a/Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs.meta b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs.meta new file mode 100644 index 0000000..22faf69 --- /dev/null +++ b/Packages/Character/Runtime/Player/kinesis/PlayerKinesisMove.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c4416dfc61926e439368a6fd3b26675 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json index d93014a..0d6652e 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -4,6 +4,7 @@ "com.unity.collab-proxy": "2.5.2", "com.unity.collections": "1.2.4", "com.unity.feature.development": "1.0.1", + "com.unity.inputsystem": "1.7.0", "com.unity.render-pipelines.universal": "14.0.11", "com.unity.textmeshpro": "3.0.6", "com.unity.timeline": "1.7.6", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 7bdffc9..bb4722f 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -86,6 +86,15 @@ "dependencies": {}, "url": "https://packages.unity.cn" }, + "com.unity.inputsystem": { + "version": "1.7.0", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.cn" + }, "com.unity.mathematics": { "version": "1.2.6", "depth": 1, diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 9fbb680..d95e4a8 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -845,7 +845,7 @@ PlayerSettings: hmiLogStartupTiming: 0 hmiCpuConfiguration: apiCompatibilityLevel: 3 - activeInputHandler: 0 + activeInputHandler: 2 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0