From dedc290469b05d95b379d564a0db891ec556eb1c Mon Sep 17 00:00:00 2001
From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com>
Date: Sat, 7 Jun 2025 16:10:24 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E7=AC=A6=E6=A8=A1?=
=?UTF-8?q?=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ModuleAnalysis/AnalysisCollector.cs | 37 ------
.../ModuleCore/ModuleAnalysis/DataAnalysis.cs | 14 ---
Assets/ModuleCore/ModuleAnalysis/DataStock.cs | 42 -------
.../ModuleAnalysis/ModuleAnalysis.cs | 16 ---
.../ModuleAnalysis/ModuleTrading.cs | 11 --
.../ModuleAnalysis/ModuleTrading.cs.meta | 11 --
Assets/ModuleCore/ModuleCharacter.meta | 8 --
.../ModuleCharacter/AnimalMachine.meta | 8 --
.../AnimalMachine/AnimalChasingState.cs | 32 -----
.../AnimalMachine/AnimalChasingState.cs.meta | 11 --
.../AnimalMachine/AnimalEatingState.cs | 39 -------
.../AnimalMachine/AnimalEatingState.cs.meta | 11 --
.../AnimalMachine/AnimalFood.cs | 8 --
.../AnimalMachine/AnimalFood.cs.meta | 11 --
.../AnimalMachine/AnimalIdleState.cs | 30 -----
.../AnimalMachine/AnimalIdleState.cs.meta | 11 --
.../AnimalMachine/AnimalMachine.cs | 81 -------------
.../AnimalMachine/AnimalMachine.cs.meta | 11 --
.../AnimalMachine/AnimalRoamingState.cs | 30 -----
.../AnimalMachine/AnimalRoamingState.cs.meta | 11 --
.../ModuleCharacter/HumanoidMachine.meta | 8 --
Assets/ModuleTest.meta | 8 --
Assets/ModuleTest/TestUI.cs | 56 ---------
Assets/ModuleTest/TestUI.cs.meta | 11 --
Assets/ModuleTest/TestUI.uxml | 12 --
Assets/ModuleTest/TestUI.uxml.meta | 10 --
Packages/Character/Runtime/Component.meta | 2 +-
.../Runtime/Component/KinesisAnimator.cs | 46 --------
.../Runtime/Component/KinesisAnimator.cs.meta | 11 --
.../Runtime/Component/KinesisController.cs | 32 -----
.../Component/KinesisController.cs.meta | 11 --
.../Runtime/Component/KinesisMovement.cs | 100 ----------------
.../Runtime/Component/KinesisMovement.cs.meta | 11 --
.../Character/Runtime/Component/Movement.cs | 21 ++++
.../Runtime/Component/Movement.cs.meta | 2 +-
.../Runtime/Component/MovementCollision.cs | 109 ++++++++++++++++++
.../Component/MovementCollision.cs.meta | 2 +-
.../Runtime/Component/MovementStandard.cs | 101 ++++++++++++++++
.../Component/MovementStandard.cs.meta | 2 +-
Packages/Character/Runtime/Interface.meta | 2 +-
.../Character/Runtime/Interface/IKinesis.cs | 23 ++--
.../Runtime/Interface/IKinesis.cs.meta | 2 +-
.../Character/Runtime/Kinesis.meta | 2 +-
Packages/Character/Runtime/Kinesis/KIdle.cs | 26 +++++
.../Character/Runtime/Kinesis/KIdle.cs.meta | 2 +-
Packages/Character/Runtime/Kinesis/KJump.cs | 102 ++++++++++++++++
.../Character/Runtime/Kinesis/KJump.cs.meta | 11 ++
Packages/Character/Runtime/Kinesis/KMove.cs | 73 ++++++++++++
.../Character/Runtime/Kinesis/KMove.cs.meta | 11 ++
Packages/Character/Runtime/MCharacter.cs | 27 +++++
Packages/Character/Runtime/MCharacter.cs.meta | 11 ++
.../Character/Runtime/MCharacterCollision.cs | 37 ++++++
.../Runtime/MCharacterCollision.cs.meta | 11 ++
.../Character/Runtime/MCharacterRigidbody.cs | 18 +++
.../Runtime/MCharacterRigidbody.cs.meta | 11 ++
.../Character/Runtime/MCharacterStandard.cs | 37 ++++++
.../Runtime/MCharacterStandard.cs.meta | 11 ++
Packages/Character/Runtime/Presets.meta | 8 --
.../Character/Runtime/Presets/KinesisIdle.cs | 20 ----
.../Runtime/Presets/KinesisIdle.cs.meta | 11 --
.../Character/Runtime/Presets/KinesisMove.cs | 61 ----------
.../Runtime/Presets/KinesisMove.cs.meta | 11 --
Packages/Character/package.json | 5 +-
Packages/packages-lock.json | 4 +-
64 files changed, 636 insertions(+), 889 deletions(-)
delete mode 100644 Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs
delete mode 100644 Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs
delete mode 100644 Assets/ModuleCore/ModuleAnalysis/DataStock.cs
delete mode 100644 Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs
delete mode 100644 Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs
delete mode 100644 Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs
delete mode 100644 Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs.meta
delete mode 100644 Assets/ModuleCore/ModuleCharacter/HumanoidMachine.meta
delete mode 100644 Assets/ModuleTest.meta
delete mode 100644 Assets/ModuleTest/TestUI.cs
delete mode 100644 Assets/ModuleTest/TestUI.cs.meta
delete mode 100644 Assets/ModuleTest/TestUI.uxml
delete mode 100644 Assets/ModuleTest/TestUI.uxml.meta
delete mode 100644 Packages/Character/Runtime/Component/KinesisAnimator.cs
delete mode 100644 Packages/Character/Runtime/Component/KinesisAnimator.cs.meta
delete mode 100644 Packages/Character/Runtime/Component/KinesisController.cs
delete mode 100644 Packages/Character/Runtime/Component/KinesisController.cs.meta
delete mode 100644 Packages/Character/Runtime/Component/KinesisMovement.cs
delete mode 100644 Packages/Character/Runtime/Component/KinesisMovement.cs.meta
create mode 100644 Packages/Character/Runtime/Component/Movement.cs
rename Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs.meta => Packages/Character/Runtime/Component/Movement.cs.meta (83%)
create mode 100644 Packages/Character/Runtime/Component/MovementCollision.cs
rename Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs.meta => Packages/Character/Runtime/Component/MovementCollision.cs.meta (83%)
create mode 100644 Packages/Character/Runtime/Component/MovementStandard.cs
rename Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs.meta => Packages/Character/Runtime/Component/MovementStandard.cs.meta (83%)
rename Assets/ModuleCore/ModuleAnalysis.meta => Packages/Character/Runtime/Kinesis.meta (77%)
create mode 100644 Packages/Character/Runtime/Kinesis/KIdle.cs
rename Assets/ModuleCore/ModuleAnalysis/DataStock.cs.meta => Packages/Character/Runtime/Kinesis/KIdle.cs.meta (83%)
create mode 100644 Packages/Character/Runtime/Kinesis/KJump.cs
create mode 100644 Packages/Character/Runtime/Kinesis/KJump.cs.meta
create mode 100644 Packages/Character/Runtime/Kinesis/KMove.cs
create mode 100644 Packages/Character/Runtime/Kinesis/KMove.cs.meta
create mode 100644 Packages/Character/Runtime/MCharacter.cs
create mode 100644 Packages/Character/Runtime/MCharacter.cs.meta
create mode 100644 Packages/Character/Runtime/MCharacterCollision.cs
create mode 100644 Packages/Character/Runtime/MCharacterCollision.cs.meta
create mode 100644 Packages/Character/Runtime/MCharacterRigidbody.cs
create mode 100644 Packages/Character/Runtime/MCharacterRigidbody.cs.meta
create mode 100644 Packages/Character/Runtime/MCharacterStandard.cs
create mode 100644 Packages/Character/Runtime/MCharacterStandard.cs.meta
delete mode 100644 Packages/Character/Runtime/Presets.meta
delete mode 100644 Packages/Character/Runtime/Presets/KinesisIdle.cs
delete mode 100644 Packages/Character/Runtime/Presets/KinesisIdle.cs.meta
delete mode 100644 Packages/Character/Runtime/Presets/KinesisMove.cs
delete mode 100644 Packages/Character/Runtime/Presets/KinesisMove.cs.meta
diff --git a/Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs b/Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs
deleted file mode 100644
index 23ce4a8..0000000
--- a/Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-///
-/// 数据采集
-///
-public class AnalysisCollector : Module {
- /// 接口 :https://api.mairui.club/hszbl/fsjy/股票代码(如000001)/分时级别/licence证书
- public string API => "https://api.mairui.club/hszbl/fsjy/";
-
- public void GetStock(string code, Action> action, bool isCache = true) {
- string json = SaveTool.LoadText(FileName.Create(code));
- if (json != null && json != "" && isCache) { StockToAnalysis(json, action); return; }
-
- //https://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a
- string url = $"{API}{code}/dn/2E111385-7BF1-473D-9210-8E22AA75375A";
- Debug.Log($"{code}重新缓存了数据!");
-
- DataRequestGet request = new DataRequestGet(url);
- request.OnError = (json) => { Debug.Log(json); };
- request.OnCallback = (json) => {
- SaveTool.SaveText(FileName.Create(code), json);
- StockToAnalysis(json, action);
- };
- request.SendAsync();
- }
-
- public void StockToAnalysis(string json, Action> action = null) {
- List stocks = JsonTool.FromJson>(json);
- List analyses = new List();
- for (int i = 0; i < stocks.Count; i++) { analyses.Add(stocks[i].To()); }
- action?.Invoke(analyses);
- }
-}
diff --git a/Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs b/Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs
deleted file mode 100644
index 9a9060c..0000000
--- a/Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-[Serializable]
-public class DataAnalysis {
- /// 日期
- public string dateTime;
- /// 最高价(元)
- public float max;
- /// 最低价(元)
- public float min;
-}
diff --git a/Assets/ModuleCore/ModuleAnalysis/DataStock.cs b/Assets/ModuleCore/ModuleAnalysis/DataStock.cs
deleted file mode 100644
index 63d6072..0000000
--- a/Assets/ModuleCore/ModuleAnalysis/DataStock.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Globalization;
-using UnityEngine;
-
-[Serializable]
-public class DataStock {
- /// 日期
- public string d;
- /// 开盘价(元)
- public string o;
- /// 最高价(元)
- public string h;
- /// 最低价(元)
- public string l;
- /// 收盘价(元)
- public string c;
- /// 成交量(手)
- public string v;
- /// 成交额(元)
- public string e;
- /// 振幅(%)
- public string zf;
- /// 换手率(%)
- public string hs;
- /// 涨跌幅(%)
- public string zd;
- /// 涨跌额(元)
- public string zde;
- ///
- public string ud;
-
- public DataAnalysis To() {
- DataAnalysis analysis = new DataAnalysis();
- //analysis.dateTime = DateTime.ParseExact(d, "yyyy-MM-dd", CultureInfo.CurrentCulture);
- analysis.dateTime = d;
- analysis.max = float.Parse(h);
- analysis.min = float.Parse(l);
- return analysis;
- }
-}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs b/Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs
deleted file mode 100644
index 25df390..0000000
--- a/Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-///
-/// 分析模块
-///
-public class ModuleAnalysis : MonoBehaviour {
- public List analyses;
- private void Start() {
- AnalysisCollector.I.GetStock("601658", (analyses) => { this.analyses = analyses; });
-
-
- }
-}
diff --git a/Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs b/Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs
deleted file mode 100644
index fc23fec..0000000
--- a/Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-///
-/// 交易模块
-///
-public abstract class ModuleTrading {
- /// 执行交易
- public abstract void Execute();
-}
diff --git a/Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs.meta b/Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs.meta
deleted file mode 100644
index 28dd67f..0000000
--- a/Assets/ModuleCore/ModuleAnalysis/ModuleTrading.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 11336b15ef40f45488427630359ab3ba
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter.meta b/Assets/ModuleCore/ModuleCharacter.meta
deleted file mode 100644
index aa4ed20..0000000
--- a/Assets/ModuleCore/ModuleCharacter.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: ebb2815476f460d48b87b8d80a3c1faa
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine.meta
deleted file mode 100644
index fe2c6c5..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4cbc8837586bb7248990d0581e20725f
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs
deleted file mode 100644
index 003e54c..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-// 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 Exit() {
-// animal.movement.StopMoving();
-// animal.animator.SetFloat("MoveSpeed", 0);
-// }
-
-// 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); }
-// }
-// }
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs.meta
deleted file mode 100644
index 356bd82..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalChasingState.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 246d20af4dd47a14b9151feca52b870d
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs
deleted file mode 100644
index c8e58b7..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-// public class AnimalEatingState : IStateMachine {
-// public string ToDefault = "Idle";
-
-// private AnimalFood target;
-
-// public AnimalMachine animal;
-// public AnimalEatingState(StateMachine machine) : base(machine) => animal = machine as AnimalMachine;
-
-// 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; }
-
-// animal.animator.SetBool("Eating", true);
-// }
-
-// 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);
-
-// animal.ChangeState(ToDefault);
-// }
-
-// public override void Update() {
-
-// }
-// }
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs.meta
deleted file mode 100644
index 8922e0e..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalEatingState.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 5d6c47e58145a2b44a20a3535cadc301
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs
deleted file mode 100644
index e5410b9..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class AnimalFood : MonoBehaviour
-{
- public float nutritionValue = 20.0f; // 饱食度增加值
-}
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs.meta
deleted file mode 100644
index 401e554..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalFood.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: d83ffa2b763f0214298151e204ea0872
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs
deleted file mode 100644
index 0524fb4..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-// public class AnimalIdleState : IStateMachine {
-// public string ToDefault = "Roaming";
-
-// private float idleTime;
-
-// 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 Exit() {
-
-// }
-
-// public override void Trigger() {
-
-// }
-
-// public override void Update() {
-// idleTime -= Time.deltaTime;
-// if (idleTime <= 0) { animal.ChangeState(ToDefault); }
-// }
-// }
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs.meta
deleted file mode 100644
index f721abd..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalIdleState.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 8defd42d4b3f4a544bbeb381cb525533
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs
deleted file mode 100644
index b89e198..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-// 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; // 动画控制器
-
-// 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));
-
-// ChangeState("Idle");
-// }
-
-// protected override void Update() {
-// base.Update();
-
-// // 更新计时器
-// hungerTimer += Time.deltaTime;
-// chasingCooldownTimer += Time.deltaTime;
-
-// if (hungerTimer >= 1.0f) { ConsumeHunger(); }
-// }
-
-// 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;
-
-// // 如果触发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 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/AnimalMachine.cs.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs.meta
deleted file mode 100644
index c4babbc..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalMachine.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: a513572e2996d4748acb2838b4cadc89
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs
deleted file mode 100644
index 7e5c086..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-// 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 Exit() {
-// animal.movement.StopMoving();
-// animal.animator.SetFloat("MoveSpeed", 0);
-// }
-
-// 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); }
-// }
-// }
diff --git a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs.meta b/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs.meta
deleted file mode 100644
index d99d063..0000000
--- a/Assets/ModuleCore/ModuleCharacter/AnimalMachine/AnimalRoamingState.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 494833b7d85b90743956831570b1c49e
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleCharacter/HumanoidMachine.meta b/Assets/ModuleCore/ModuleCharacter/HumanoidMachine.meta
deleted file mode 100644
index 65a1fc8..0000000
--- a/Assets/ModuleCore/ModuleCharacter/HumanoidMachine.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: fc54f6ddf4030054f974974bf79889d6
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleTest.meta b/Assets/ModuleTest.meta
deleted file mode 100644
index edff7c8..0000000
--- a/Assets/ModuleTest.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 56476dea62b51fc41b2a53b9bdfaa56f
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleTest/TestUI.cs b/Assets/ModuleTest/TestUI.cs
deleted file mode 100644
index 5d92b3c..0000000
--- a/Assets/ModuleTest/TestUI.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.UIElements;
-using MuHua;
-
-public class TestUI : MonoBehaviour {
- /// 绑定文档
- public UIDocument document;
- /// 根目录文档
- public VisualElement root => document.rootVisualElement;
-
- private UIScrollView scrollView;
- private UIScrollView scrollViewHorizontal;
- private UIScrollView scrollViewVertical;
-
- private UISlider slider1;
- private UISlider slider2;
- private UISlider slider3;
- private UISlider slider4;
-
- private void Awake() {
- VisualElement ScrollView = root.Q("ScrollView");
- scrollView = new UIScrollView(ScrollView, root, UIDirection.HorizontalAndVertical);
-
- VisualElement ScrollViewHorizontal = root.Q("ScrollViewHorizontal");
- scrollViewHorizontal = new UIScrollView(ScrollViewHorizontal, root, UIDirection.Horizontal);
-
- VisualElement ScrollViewVertical = root.Q("ScrollViewVertical");
- scrollViewVertical = new UIScrollView(ScrollViewVertical, root, UIDirection.Vertical);
-
- VisualElement Slider1 = root.Q("SliderHorizontal1");
- slider1 = new UISlider(Slider1, root, UIDirection.FromLeftToRight);
-
- VisualElement Slider2 = root.Q("SliderHorizontal2");
- slider2 = new UISlider(Slider2, root, UIDirection.FromRightToLeft);
-
- VisualElement Slider3 = root.Q("SliderVertical1");
- slider3 = new UISlider(Slider3, root, UIDirection.FromTopToBottom);
-
- VisualElement Slider4 = root.Q("SliderVertical2");
- slider4 = new UISlider(Slider4, root, UIDirection.FromBottomToTop);
-
- slider4.ValueChanged += (obj) => { Debug.Log(obj); };
- }
- private void Update() {
- scrollView.Update();
- scrollViewHorizontal.Update();
- scrollViewVertical.Update();
-
- slider1.Update();
- slider2.Update();
- slider3.Update();
- slider4.Update();
- }
-}
diff --git a/Assets/ModuleTest/TestUI.cs.meta b/Assets/ModuleTest/TestUI.cs.meta
deleted file mode 100644
index 31d57a7..0000000
--- a/Assets/ModuleTest/TestUI.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 48270532e0731284a92ff8556d892c7e
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleTest/TestUI.uxml b/Assets/ModuleTest/TestUI.uxml
deleted file mode 100644
index e91b0bb..0000000
--- a/Assets/ModuleTest/TestUI.uxml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Assets/ModuleTest/TestUI.uxml.meta b/Assets/ModuleTest/TestUI.uxml.meta
deleted file mode 100644
index 60d3e01..0000000
--- a/Assets/ModuleTest/TestUI.uxml.meta
+++ /dev/null
@@ -1,10 +0,0 @@
-fileFormatVersion: 2
-guid: 337d91fd31b0b764f97868cdacc90f66
-ScriptedImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 2
- userData:
- assetBundleName:
- assetBundleVariant:
- script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Packages/Character/Runtime/Component.meta b/Packages/Character/Runtime/Component.meta
index 8d9bc2f..96b7ba6 100644
--- a/Packages/Character/Runtime/Component.meta
+++ b/Packages/Character/Runtime/Component.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 6636b9d6db0317e43a61b41ac2b2297d
+guid: 5714b692b8275aa4cb37f8f22344174e
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Packages/Character/Runtime/Component/KinesisAnimator.cs b/Packages/Character/Runtime/Component/KinesisAnimator.cs
deleted file mode 100644
index 3c33110..0000000
--- a/Packages/Character/Runtime/Component/KinesisAnimator.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MuHua {
- ///
- /// 动作动画控制器
- ///
- [RequireComponent(typeof(Animator))]
- public class KinesisAnimator : MonoBehaviour {
- protected int layerIndex;
- protected string current;
- protected Animator animator;
- protected IKinesis kinesis;
-
- public virtual void Awake() => animator = GetComponent();
-
- /// 设置动作
- public virtual void SetKinesis(IKinesis kinesis) => this.kinesis = kinesis;
- /// 动画过渡
- public virtual void Transition(int layerIndex, string name, float normalizedTransitionDuration = 0.1f) {
- animator.SetLayerWeight(this.layerIndex, 0);
- animator.SetLayerWeight(layerIndex, 1);
- this.layerIndex = layerIndex;
- Transition(name, normalizedTransitionDuration);
- }
- /// 动画过渡
- public virtual void Transition(string name, float normalizedTransitionDuration = 0.1f) {
- if (current == name) { animator.Play(name); }
- else { animator.CrossFade(name, normalizedTransitionDuration); }
- current = name;
- }
-
- /// 设置参数
- public virtual void SetBool(string name, bool value) => animator.SetBool(name, value);
- /// 设置参数
- public virtual void SetFloat(string name, float value) => animator.SetFloat(name, value);
-
- /// 触发动画特效
- public virtual void AnimationEffects() => kinesis?.AnimationEffects();
- /// 动画结束(有后摇)
- public virtual void AnimationEnd() => kinesis?.AnimationEnd();
- /// 动画退出(无后摇)
- public virtual void AnimationExit() => kinesis?.AnimationExit();
- }
-}
diff --git a/Packages/Character/Runtime/Component/KinesisAnimator.cs.meta b/Packages/Character/Runtime/Component/KinesisAnimator.cs.meta
deleted file mode 100644
index 45f3a31..0000000
--- a/Packages/Character/Runtime/Component/KinesisAnimator.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: e3ceef7224b9b094aadaa9b3a0238648
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/Character/Runtime/Component/KinesisController.cs b/Packages/Character/Runtime/Component/KinesisController.cs
deleted file mode 100644
index 6c60d99..0000000
--- a/Packages/Character/Runtime/Component/KinesisController.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MuHua {
- ///
- /// 动作控制器
- ///
- public class KinesisController : MonoBehaviour {
- public KinesisAnimator animator;
- public KinesisMovement movement;
-
- private IKinesis currentKinesis;
-
- public virtual void Awake() => TransitionKinesis(new KinesisIdle());
-
- public virtual void Update() => currentKinesis?.UpdateKinesis();
-
- /// 动作过渡
- public virtual void TransitionKinesis(IKinesis kinesis) {
- //不可以转换
- if (currentKinesis != null && !currentKinesis.Transition(kinesis)) { return; }
- //进行转换
- currentKinesis?.FinishKinesis();
- currentKinesis = kinesis;
- currentKinesis?.StartKinesis();
-
- animator?.SetKinesis(currentKinesis);
- movement?.SetKinesis(currentKinesis);
- }
- }
-}
\ No newline at end of file
diff --git a/Packages/Character/Runtime/Component/KinesisController.cs.meta b/Packages/Character/Runtime/Component/KinesisController.cs.meta
deleted file mode 100644
index e438c20..0000000
--- a/Packages/Character/Runtime/Component/KinesisController.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 2c1979e13b26c7b48a7a4690da154535
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/Character/Runtime/Component/KinesisMovement.cs b/Packages/Character/Runtime/Component/KinesisMovement.cs
deleted file mode 100644
index be0bda5..0000000
--- a/Packages/Character/Runtime/Component/KinesisMovement.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MuHua {
- ///
- /// 动作运动控制器
- ///
- [RequireComponent(typeof(CharacterController))]
- public class KinesisMovement : MonoBehaviour {
- public float moveSpeed = 5;// 移动速度
- public float acceleration = 10.0f;// 加速度
- [Range(0.0f, 0.3f)]
- public float rotationSmoothTime = 0.12f;// 旋转平滑
-
- protected float currentSpeed;// 当前速度
- protected Vector2 moveDirection;// 移动方向
- protected float animationBlend;// 动画混合速度
- protected float targetRotation = 0.0f;// 旋转目标
- protected float rotationVelocity;// 旋转速度
- protected float verticalVelocity;// 垂直速度
- protected IKinesis kinesis;// 当前动作
- protected KinesisAnimator animator;// 动作动画控制器
- protected CharacterController controller;// 角色控制器
-
- public virtual bool IsStop => currentSpeed == 0;
-
- public virtual void Awake() {
- animator = GetComponent();
- controller = GetComponent();
- }
- public virtual void Update() {
- PlanarMovement();
- }
-
- /// 设置动作
- public virtual void SetKinesis(IKinesis kinesis) => this.kinesis = kinesis;
- /// 设置方向
- public virtual void SetDirection(Vector2 moveDirection) => this.moveDirection = moveDirection;
- /// 停止移动
- public virtual void StopMovement() {
- currentSpeed = 0;
- moveDirection = Vector2.zero;
- animationBlend = 0;
- animator?.SetFloat("MoveSpeed", animationBlend);
- }
-
- /// 平面移动
- public virtual void PlanarMovement() {
- // 设定目标速度
- float targetSpeed = moveSpeed;
-
- // 一种简单的加速和减速设计,易于拆卸、更换或迭代
-
- // 如果没有输入,将目标速度设置为0
- if (moveDirection == Vector2.zero && currentSpeed == 0) { return; }
- if (moveDirection == Vector2.zero) targetSpeed = 0.0f;
-
- // 当前水平速度的参考
- // float currentHorizontalSpeed = new Vector3(controller.velocity.x, 0.0f, controller.velocity.z).magnitude;
-
- // float speedOffset = 0.1f;
-
- // 加速或减速至目标速度
- // if (currentHorizontalSpeed < targetSpeed - speedOffset || currentHorizontalSpeed > targetSpeed + speedOffset) {
- // 产生弯曲的结果,而不是线性的结果,从而产生更有机的速度变化
- // 注意Lerp中的T是夹紧的,所以我们不需要夹紧我们的速度
- currentSpeed = Mathf.Lerp(currentSpeed, targetSpeed, Time.deltaTime * acceleration);
-
- // round speed to 3 decimal places
- currentSpeed = Mathf.Round(currentSpeed * 1000f) / 1000f;
- // }
- // else { currentSpeed = targetSpeed; }
-
- animationBlend = Mathf.Lerp(animationBlend, targetSpeed, Time.deltaTime * acceleration);
- if (animationBlend < 0.01f) animationBlend = 0f;
-
- // 使输入方向标准化
- Vector3 inputDirection = new Vector3(moveDirection.x, 0.0f, moveDirection.y).normalized;
-
- // 如果有移动输入,则在玩家移动时旋转玩家
- if (moveDirection != Vector2.zero) {
- targetRotation = Mathf.Atan2(inputDirection.x, inputDirection.z) * Mathf.Rad2Deg;
- float rotation = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetRotation, ref rotationVelocity, rotationSmoothTime);
-
- // 相对于相机位置旋转到面向输入方向
- transform.rotation = Quaternion.Euler(0.0f, rotation, 0.0f);
- }
-
-
- Vector3 targetDirection = Quaternion.Euler(0.0f, targetRotation, 0.0f) * Vector3.forward;
-
- // 移动
- controller.Move(targetDirection.normalized * (currentSpeed * Time.deltaTime) + new Vector3(0.0f, verticalVelocity, 0.0f) * Time.deltaTime);
-
- // 如果使用角色,请更新动画师
- animator?.SetFloat("MoveSpeed", animationBlend);
- }
- }
-}
diff --git a/Packages/Character/Runtime/Component/KinesisMovement.cs.meta b/Packages/Character/Runtime/Component/KinesisMovement.cs.meta
deleted file mode 100644
index ed8a330..0000000
--- a/Packages/Character/Runtime/Component/KinesisMovement.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 61ef13b926e462442920d0ba932e8e27
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/Character/Runtime/Component/Movement.cs b/Packages/Character/Runtime/Component/Movement.cs
new file mode 100644
index 0000000..416db7a
--- /dev/null
+++ b/Packages/Character/Runtime/Component/Movement.cs
@@ -0,0 +1,21 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 运动器
+ ///
+ public abstract class Movement {
+ /// 当前速度
+ public abstract float Speed { get; }
+ /// 是否接地
+ public abstract bool Grounded { get; }
+ /// 移动
+ public abstract void Move(Vector2 moveDirection, float moveSpeed, float acceleration, bool isRotation);
+ /// 跳跃
+ public abstract void Jump(float jumpHeight);
+ /// 更新
+ public abstract void Update();
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs.meta b/Packages/Character/Runtime/Component/Movement.cs.meta
similarity index 83%
rename from Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs.meta
rename to Packages/Character/Runtime/Component/Movement.cs.meta
index 633dd5c..aa07dc5 100644
--- a/Assets/ModuleCore/ModuleAnalysis/ModuleAnalysis.cs.meta
+++ b/Packages/Character/Runtime/Component/Movement.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 690f28715cec9bc41a56277db51f79fc
+guid: c48241a855a542e41b23b017edcab454
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Packages/Character/Runtime/Component/MovementCollision.cs b/Packages/Character/Runtime/Component/MovementCollision.cs
new file mode 100644
index 0000000..936040c
--- /dev/null
+++ b/Packages/Character/Runtime/Component/MovementCollision.cs
@@ -0,0 +1,109 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 碰撞 - 运动器
+ ///
+ public class MovementCollision : Movement {
+ /// 地面图层
+ public readonly LayerMask groundLayers;
+ /// 角色控制器
+ public readonly CharacterController controller;
+
+ public float moveSpeed;// 移动速度
+ public float currentSpeed;// 当前速度
+ public float acceleration;// 加速度
+ public float animationBlend;// 动画混合速度
+ public Vector2 moveDirection;// 移动方向
+
+ public bool isRotation;// 是否旋转
+ public float targetRotation;// 目标旋转
+ public float rotationVelocity;// 旋转速度
+ public float rotationSmoothTime = 0.12f;// 旋转平滑 Range(0.0f, 0.3f)
+
+ public bool grounded = true;// 是否接地
+ public float verticalVelocity;// 垂直速度
+ public float groundedRadius = 0.14f;// 地面检测半径
+
+ /// 垂直重力
+ public float Gravity => Physics.gravity.y;
+
+ public override float Speed => currentSpeed;
+
+ public override bool Grounded => grounded;
+
+ public MovementCollision(CharacterController controller, LayerMask groundLayers) {
+ this.controller = controller;
+ this.groundLayers = groundLayers;
+ }
+
+ /// 移动
+ public override void Move(Vector2 moveDirection, float moveSpeed, float acceleration, bool isRotation) {
+ this.moveSpeed = moveSpeed;
+ this.acceleration = acceleration;
+ this.moveDirection = moveDirection;
+ this.isRotation = isRotation;
+ }
+ /// H*-2*G的平方根=达到所需高度所需的速度
+ public override void Jump(float jumpHeight) {
+ verticalVelocity = Mathf.Sqrt(jumpHeight * -2f * Gravity);
+ }
+ /// 更新
+ public override void Update() {
+ // 如果没有输入,将目标速度设置为0
+ if (moveDirection == Vector2.zero) moveSpeed = 0.0f;
+
+ // 当前速度
+ currentSpeed = Mathf.Lerp(currentSpeed, moveSpeed, Time.deltaTime * acceleration);
+
+ // 四舍五入到小数点后3位
+ currentSpeed = Mathf.Round(currentSpeed * 1000f) / 1000f;
+
+ animationBlend = Mathf.Lerp(animationBlend, moveSpeed, Time.deltaTime * acceleration);
+ if (animationBlend < 0.01f) animationBlend = 0f;
+
+ // 使输入方向标准化
+ Vector3 inputDirection = new Vector3(moveDirection.x, 0.0f, moveDirection.y).normalized;
+
+ if (isRotation) {
+ // 如果有移动输入,则在玩家移动时旋转玩家
+ if (moveDirection != Vector2.zero) {
+ targetRotation = Mathf.Atan2(inputDirection.x, inputDirection.z) * Mathf.Rad2Deg;
+ float rotation = Mathf.SmoothDampAngle(controller.transform.eulerAngles.y, targetRotation, ref rotationVelocity, rotationSmoothTime);
+
+ // 相对于相机位置旋转到面向输入方向
+ controller.transform.rotation = Quaternion.Euler(0.0f, rotation, 0.0f);
+ }
+
+ // 移动
+ Vector3 targetDirection = Quaternion.Euler(0.0f, targetRotation, 0.0f) * Vector3.forward;
+ Vector3 horizontal = targetDirection.normalized * (currentSpeed * Time.deltaTime);
+ Vector3 vertical = new Vector3(0.0f, verticalVelocity, 0.0f) * Time.deltaTime;
+ controller.Move(horizontal + vertical);
+ }
+ else {
+ // 移动
+ Vector3 horizontal = inputDirection * (currentSpeed * Time.deltaTime);
+ Vector3 vertical = new Vector3(0.0f, verticalVelocity, 0.0f) * Time.deltaTime;
+ controller.Move(horizontal + vertical);
+ }
+
+ // 地面检测
+ Vector3 position = controller.transform.position;
+ Vector3 rayOrigin = new Vector3(position.x, position.y + groundedRadius, position.z);
+ // 射线长度稍微大于检测半径
+ float rayLength = groundedRadius * 2 + 0.1f;
+ // 使用射线检测地面
+ grounded = Physics.Raycast(rayOrigin, Vector3.down, rayLength, groundLayers, QueryTriggerInteraction.Ignore);
+ // 可选:调试显示射线
+ Debug.DrawRay(rayOrigin, Vector3.down * rayLength, grounded ? Color.green : Color.red);
+
+ // 引力
+ verticalVelocity += Gravity * Time.deltaTime;
+ // 站在地面上时,限制最大下落速度
+ if (grounded && verticalVelocity < 0.0f) { verticalVelocity = -2f; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs.meta b/Packages/Character/Runtime/Component/MovementCollision.cs.meta
similarity index 83%
rename from Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs.meta
rename to Packages/Character/Runtime/Component/MovementCollision.cs.meta
index 09b9a0d..7b2de4a 100644
--- a/Assets/ModuleCore/ModuleAnalysis/DataAnalysis.cs.meta
+++ b/Packages/Character/Runtime/Component/MovementCollision.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: b4b97a8a3401e2a42903697e2b5acb2f
+guid: 06f3697338f20ac459ed126fc05a9694
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Packages/Character/Runtime/Component/MovementStandard.cs b/Packages/Character/Runtime/Component/MovementStandard.cs
new file mode 100644
index 0000000..ff18947
--- /dev/null
+++ b/Packages/Character/Runtime/Component/MovementStandard.cs
@@ -0,0 +1,101 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 标准 - 运动器
+ ///
+ public class MovementStandard : Movement {
+ /// 地面图层
+ public readonly LayerMask groundLayers;
+ /// 变换
+ public readonly Transform transform;
+
+ public float moveSpeed;// 移动速度
+ public float currentSpeed;// 当前速度
+ public float acceleration;// 加速度
+ public float animationBlend;// 动画混合速度
+ public Vector2 moveDirection;// 移动方向
+
+ public bool isRotation;// 是否旋转
+ public float targetRotation;// 目标旋转
+ public float rotationVelocity;// 旋转速度
+ public float rotationSmoothTime = 0.12f;// 旋转平滑 Range(0.0f, 0.3f)
+
+ public bool grounded = true;// 是否接地
+ public float verticalVelocity;// 垂直速度
+ public float groundedRadius = 0.14f;// 地面检测半径
+
+ /// 垂直重力
+ public float Gravity => Physics.gravity.y;
+
+ public override float Speed => currentSpeed;
+
+ public override bool Grounded => grounded;
+
+ public MovementStandard(Transform transform, LayerMask groundLayers) {
+ this.transform = transform;
+ this.groundLayers = groundLayers;
+ }
+
+ /// 移动
+ public override void Move(Vector2 moveDirection, float moveSpeed, float acceleration, bool isRotation) {
+ this.moveSpeed = moveSpeed;
+ this.acceleration = acceleration;
+ this.moveDirection = moveDirection;
+ this.isRotation = isRotation;
+ }
+ /// 跳跃
+ public override void Jump(float jumpHeight) {
+ verticalVelocity = Mathf.Sqrt(jumpHeight * -2f * Gravity);
+ }
+ /// 更新
+ public override void Update() {
+ // 如果没有输入,将目标速度设置为0
+ if (moveDirection == Vector2.zero) moveSpeed = 0.0f;
+
+ // 当前速度
+ currentSpeed = Mathf.Lerp(currentSpeed, moveSpeed, Time.deltaTime * acceleration);
+
+ // 四舍五入到小数点后3位
+ currentSpeed = Mathf.Round(currentSpeed * 1000f) / 1000f;
+
+ animationBlend = Mathf.Lerp(animationBlend, moveSpeed, Time.deltaTime * acceleration);
+ if (animationBlend < 0.01f) animationBlend = 0f;
+
+ // 使输入方向标准化
+ Vector3 inputDirection = new Vector3(moveDirection.x, 0.0f, moveDirection.y).normalized;
+
+ // 如果有移动输入,则在玩家移动时旋转玩家
+ if (moveDirection != Vector2.zero && isRotation) {
+ targetRotation = Mathf.Atan2(inputDirection.x, inputDirection.z) * Mathf.Rad2Deg;
+ float rotation = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetRotation, ref rotationVelocity, rotationSmoothTime);
+
+ // 相对于相机位置旋转到面向输入方向
+ transform.rotation = Quaternion.Euler(0.0f, rotation, 0.0f);
+ }
+
+ // 移动
+ Vector3 targetDirection = Quaternion.Euler(0.0f, targetRotation, 0.0f) * Vector3.forward;
+ Vector3 horizontal = targetDirection.normalized * (currentSpeed * Time.deltaTime);
+ Vector3 vertical = new Vector3(0.0f, verticalVelocity, 0.0f) * Time.deltaTime;
+ transform.position += horizontal + vertical;
+
+ // 地面检测
+ Vector3 position = transform.position;
+ Vector3 rayOrigin = new Vector3(position.x, position.y + groundedRadius, position.z);
+ // 射线长度稍微大于检测半径
+ float rayLength = groundedRadius * 2 + 0.1f;
+ // 使用射线检测地面
+ grounded = Physics.Raycast(rayOrigin, Vector3.down, rayLength, groundLayers, QueryTriggerInteraction.Ignore);
+ // 可选:调试显示射线
+ Debug.DrawRay(rayOrigin, Vector3.down * rayLength, grounded ? Color.green : Color.red);
+
+ // 引力
+ verticalVelocity += Gravity * Time.deltaTime;
+ // 站在地面上时,限制最大下落速度
+ if (grounded && verticalVelocity < 0.0f) { verticalVelocity = -2f; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs.meta b/Packages/Character/Runtime/Component/MovementStandard.cs.meta
similarity index 83%
rename from Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs.meta
rename to Packages/Character/Runtime/Component/MovementStandard.cs.meta
index 8ec73eb..d18f435 100644
--- a/Assets/ModuleCore/ModuleAnalysis/AnalysisCollector.cs.meta
+++ b/Packages/Character/Runtime/Component/MovementStandard.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 06f3d6e55c2a1584ba20c9262c06704d
+guid: cf671b0b45929dc4c970eadb97df3ec8
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Packages/Character/Runtime/Interface.meta b/Packages/Character/Runtime/Interface.meta
index 784b45d..eb75fa7 100644
--- a/Packages/Character/Runtime/Interface.meta
+++ b/Packages/Character/Runtime/Interface.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: a373c751fa5625249af75654ab69aec4
+guid: 197992f6020004c44a74153f43c5f7d1
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Packages/Character/Runtime/Interface/IKinesis.cs b/Packages/Character/Runtime/Interface/IKinesis.cs
index cf508c5..75d521a 100644
--- a/Packages/Character/Runtime/Interface/IKinesis.cs
+++ b/Packages/Character/Runtime/Interface/IKinesis.cs
@@ -4,23 +4,18 @@ using UnityEngine;
namespace MuHua {
///
- /// 角色动作
+ /// 运动
///
- public interface IKinesis {
+ public abstract class IKinesis {
/// 动作过渡
- public bool Transition(IKinesis kinesis);
+ public abstract bool Transition(IKinesis kinesis);
/// 开始动作
- public void StartKinesis();
+ public abstract void StartKinesis();
/// 更新动作
- public void UpdateKinesis();
+ public abstract void UpdateKinesis();
/// 完成动作
- public void FinishKinesis();
-
- /// 触发动画特效
- public void AnimationEffects();
- /// 动画结束(有后摇)
- public void AnimationEnd();
- /// 动画退出(无后摇)
- public void AnimationExit();
+ public abstract void FinishKinesis();
+ /// 动画结束
+ public abstract void AnimationExit();
}
-}
+}
\ No newline at end of file
diff --git a/Packages/Character/Runtime/Interface/IKinesis.cs.meta b/Packages/Character/Runtime/Interface/IKinesis.cs.meta
index 923f771..4f48410 100644
--- a/Packages/Character/Runtime/Interface/IKinesis.cs.meta
+++ b/Packages/Character/Runtime/Interface/IKinesis.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: e096ab8673cda9e42be867d97aae83eb
+guid: 1490d224da1fe674cb366599e7603d66
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Assets/ModuleCore/ModuleAnalysis.meta b/Packages/Character/Runtime/Kinesis.meta
similarity index 77%
rename from Assets/ModuleCore/ModuleAnalysis.meta
rename to Packages/Character/Runtime/Kinesis.meta
index 1b15646..eb37d7c 100644
--- a/Assets/ModuleCore/ModuleAnalysis.meta
+++ b/Packages/Character/Runtime/Kinesis.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: bae5611456f58c64eaa6b106bc0b75cc
+guid: 338d1e647d487fe43aee258fbf63dfd4
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Packages/Character/Runtime/Kinesis/KIdle.cs b/Packages/Character/Runtime/Kinesis/KIdle.cs
new file mode 100644
index 0000000..b8882f4
--- /dev/null
+++ b/Packages/Character/Runtime/Kinesis/KIdle.cs
@@ -0,0 +1,26 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 空闲 - 运动
+ ///
+ public class KIdle : IKinesis {
+ public override bool Transition(IKinesis kinesis) {
+ return true;
+ }
+ public override void StartKinesis() {
+ // throw new System.NotImplementedException();
+ }
+ public override void UpdateKinesis() {
+ // throw new System.NotImplementedException();
+ }
+ public override void FinishKinesis() {
+ // throw new System.NotImplementedException();
+ }
+ public override void AnimationExit() {
+ // throw new System.NotImplementedException();
+ }
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAnalysis/DataStock.cs.meta b/Packages/Character/Runtime/Kinesis/KIdle.cs.meta
similarity index 83%
rename from Assets/ModuleCore/ModuleAnalysis/DataStock.cs.meta
rename to Packages/Character/Runtime/Kinesis/KIdle.cs.meta
index 28b9c5f..d977540 100644
--- a/Assets/ModuleCore/ModuleAnalysis/DataStock.cs.meta
+++ b/Packages/Character/Runtime/Kinesis/KIdle.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 4965f5d3a8eb6ef4ca7837688badb4e6
+guid: 29150243edc07d0429fea37464e830a7
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Packages/Character/Runtime/Kinesis/KJump.cs b/Packages/Character/Runtime/Kinesis/KJump.cs
new file mode 100644
index 0000000..fd37fd5
--- /dev/null
+++ b/Packages/Character/Runtime/Kinesis/KJump.cs
@@ -0,0 +1,102 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 跳跃 - 运动
+ ///
+ public class KJump : IKinesis {
+ /// 基础角色
+ public readonly MCharacter character;
+
+ /// 结束跳跃
+ public bool isEndJump;
+ /// 是否接地
+ public bool isGrounded;
+ /// 允许转换
+ public bool isTransition;
+ /// 跳跃高度
+ public float jumpHeight;
+ /// 衰退速度
+ public float decaySpeed;
+ /// 移动速度
+ 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 KJump(MCharacter character, Vector2 moveDirection, float jumpHeight, bool isRotation) {
+ this.character = character;
+ this.moveDirection = moveDirection;
+ this.jumpHeight = jumpHeight;
+ }
+
+ 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 isTransition;
+ }
+ public override void StartKinesis() {
+ if (isInitial) {
+ character.transform.position = position;
+ character.transform.eulerAngles = eulerAngles;
+ }
+ isEndJump = false;
+ isTransition = false;
+ isGrounded = movement.Grounded;
+ decaySpeed = movement.Speed;
+ movement.Jump(jumpHeight);
+ animator.SetTrigger("JumpStart");
+ }
+ public override void UpdateKinesis() {
+ if (isEndJump) { return; }
+ // 衰退速度
+ decaySpeed = Mathf.Lerp(decaySpeed, 0, Time.deltaTime * 0.8f);
+ movement.Move(moveDirection, decaySpeed, acceleration, isRotation);
+ // 跳跃状态判断
+ if (isGrounded == movement.Grounded) { return; }
+ isGrounded = movement.Grounded;
+ // 起跳
+ if (!isGrounded) { return; }
+ // 落地
+ isEndJump = true;
+ animator.SetTrigger("JumpLand");
+ movement.Move(Vector2.zero, decaySpeed, acceleration, isRotation);
+ }
+ public override void FinishKinesis() {
+ // throw new System.NotImplementedException();
+ }
+ public override void AnimationExit() {
+ isTransition = true;
+ // 转换到移动
+ KMove kMove = new KMove(character, moveDirection, isRotation);
+ kMove.Settings(moveSpeed, acceleration);
+ character.Transition(kMove);
+ }
+ }
+}
diff --git a/Packages/Character/Runtime/Kinesis/KJump.cs.meta b/Packages/Character/Runtime/Kinesis/KJump.cs.meta
new file mode 100644
index 0000000..ea9735c
--- /dev/null
+++ b/Packages/Character/Runtime/Kinesis/KJump.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d61c404e3dc615b4eb590448b876863c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/Character/Runtime/Kinesis/KMove.cs b/Packages/Character/Runtime/Kinesis/KMove.cs
new file mode 100644
index 0000000..018b29a
--- /dev/null
+++ b/Packages/Character/Runtime/Kinesis/KMove.cs
@@ -0,0 +1,73 @@
+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();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/Character/Runtime/Kinesis/KMove.cs.meta b/Packages/Character/Runtime/Kinesis/KMove.cs.meta
new file mode 100644
index 0000000..4a487c9
--- /dev/null
+++ b/Packages/Character/Runtime/Kinesis/KMove.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e2b41872ba018e447a649cb6bb35059f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/Character/Runtime/MCharacter.cs b/Packages/Character/Runtime/MCharacter.cs
new file mode 100644
index 0000000..9f91054
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacter.cs
@@ -0,0 +1,27 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 角色 - 模块
+ ///
+ public abstract class MCharacter {
+
+ /// 变换器
+ public Transform transform;
+ /// 动画器
+ public Animator animator;
+ /// 运动器
+ public Movement movement;
+
+ public MCharacter(Animator animator) => this.animator = animator;
+
+ /// 更新
+ public abstract void Update();
+ /// 动作过渡
+ public abstract bool Transition(IKinesis kinesis);
+ /// 动画结束
+ public abstract void AnimationExit();
+ }
+}
\ No newline at end of file
diff --git a/Packages/Character/Runtime/MCharacter.cs.meta b/Packages/Character/Runtime/MCharacter.cs.meta
new file mode 100644
index 0000000..9d057c4
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacter.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f75543aff254f1c4899eb3d332ba5de9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/Character/Runtime/MCharacterCollision.cs b/Packages/Character/Runtime/MCharacterCollision.cs
new file mode 100644
index 0000000..1541c6e
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacterCollision.cs
@@ -0,0 +1,37 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 碰撞角色 - 模块
+ ///
+ public class MCharacterCollision : MCharacter {
+
+ /// 当前动作
+ public IKinesis currentKinesis;
+
+ public MCharacterCollision(Animator animator, CharacterController controller, LayerMask ground) : base(animator) {
+ movement = new MovementCollision(controller, ground);
+
+ Transition(new KIdle());
+ }
+
+ public override void Update() {
+ movement.Update();
+ currentKinesis.UpdateKinesis();
+ }
+ public override bool Transition(IKinesis kinesis) {
+ // 不可以转换
+ if (currentKinesis != null && !currentKinesis.Transition(kinesis)) { return false; }
+ // 进行转换
+ currentKinesis?.FinishKinesis();
+ currentKinesis = kinesis;
+ currentKinesis?.StartKinesis();
+ return true;
+ }
+ public override void AnimationExit() {
+ currentKinesis.AnimationExit();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/Character/Runtime/MCharacterCollision.cs.meta b/Packages/Character/Runtime/MCharacterCollision.cs.meta
new file mode 100644
index 0000000..4c63c81
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacterCollision.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fa752d6843dd06146b699b3588a59ea1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/Character/Runtime/MCharacterRigidbody.cs b/Packages/Character/Runtime/MCharacterRigidbody.cs
new file mode 100644
index 0000000..221a09b
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacterRigidbody.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class MCharacterRigidbody : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Packages/Character/Runtime/MCharacterRigidbody.cs.meta b/Packages/Character/Runtime/MCharacterRigidbody.cs.meta
new file mode 100644
index 0000000..f54bb9b
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacterRigidbody.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c073d7ddd6e118746b2709e22bcf7ea6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/Character/Runtime/MCharacterStandard.cs b/Packages/Character/Runtime/MCharacterStandard.cs
new file mode 100644
index 0000000..4d5af02
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacterStandard.cs
@@ -0,0 +1,37 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MuHua {
+ ///
+ /// 标准角色 - 模块
+ ///
+ public class MCharacterStandard : MCharacter {
+
+ /// 当前动作
+ public IKinesis currentKinesis;
+
+ public MCharacterStandard(Animator animator, LayerMask ground) : base(animator) {
+ movement = new MovementStandard(transform, ground);
+
+ Transition(new KIdle());
+ }
+
+ public override void Update() {
+ movement.Update();
+ currentKinesis.UpdateKinesis();
+ }
+ public override bool Transition(IKinesis kinesis) {
+ // 不可以转换
+ if (currentKinesis != null && !currentKinesis.Transition(kinesis)) { return false; }
+ // 进行转换
+ currentKinesis?.FinishKinesis();
+ currentKinesis = kinesis;
+ currentKinesis?.StartKinesis();
+ return true;
+ }
+ public override void AnimationExit() {
+ currentKinesis.AnimationExit();
+ }
+ }
+}
diff --git a/Packages/Character/Runtime/MCharacterStandard.cs.meta b/Packages/Character/Runtime/MCharacterStandard.cs.meta
new file mode 100644
index 0000000..4ef4bef
--- /dev/null
+++ b/Packages/Character/Runtime/MCharacterStandard.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7eb8fc105ff36704499c0a954daa9c5c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/Character/Runtime/Presets.meta b/Packages/Character/Runtime/Presets.meta
deleted file mode 100644
index 362fcc4..0000000
--- a/Packages/Character/Runtime/Presets.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8c36f49b360d4c048aef47715ebb0616
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/Character/Runtime/Presets/KinesisIdle.cs b/Packages/Character/Runtime/Presets/KinesisIdle.cs
deleted file mode 100644
index b63c0b5..0000000
--- a/Packages/Character/Runtime/Presets/KinesisIdle.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MuHua {
- ///
- /// 空闲动作
- ///
- public class KinesisIdle : IKinesis {
-
- public bool Transition(IKinesis kinesis) => true;
- public void StartKinesis() { }
- public void UpdateKinesis() { }
- public void FinishKinesis() { }
-
- public void AnimationEffects() { }
- public void AnimationEnd() { }
- public void AnimationExit() { }
- }
-}
diff --git a/Packages/Character/Runtime/Presets/KinesisIdle.cs.meta b/Packages/Character/Runtime/Presets/KinesisIdle.cs.meta
deleted file mode 100644
index 2f6acd1..0000000
--- a/Packages/Character/Runtime/Presets/KinesisIdle.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 99fdb0fe5f05b3b44bf010af88ab1f8f
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/Character/Runtime/Presets/KinesisMove.cs b/Packages/Character/Runtime/Presets/KinesisMove.cs
deleted file mode 100644
index cbb1cc5..0000000
--- a/Packages/Character/Runtime/Presets/KinesisMove.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MuHua {
- ///
- /// 移动动作
- ///
- public class KinesisMove : IKinesis {
-
- public Vector3 position;
- public Vector3 eulerAngles;
- public Vector2 moveDirection;// 移动方向
- public KinesisMovement movement;
- public KinesisController controller;
-
- public KinesisMove(KinesisController controller, Vector2 moveDirection) {
- this.controller = controller;
- this.moveDirection = moveDirection;
- movement = controller.movement;
- position = movement.transform.position;
- eulerAngles = movement.transform.eulerAngles;
- }
- public KinesisMove(KinesisController controller, Vector2 moveDirection, Vector3 position, Vector3 eulerAngles) {
- this.position = position;
- this.eulerAngles = eulerAngles;
- this.controller = controller;
- this.moveDirection = moveDirection;
- movement = controller.movement;
- }
-
- public bool Transition(IKinesis kinesis) {
- KinesisMove move = kinesis as KinesisMove;
- if (move == null) { return true; }
- position = move.position;
- eulerAngles = move.eulerAngles;
- moveDirection = move.moveDirection;
- movement.transform.position = position;
- movement.transform.eulerAngles = eulerAngles;
- movement.SetDirection(moveDirection);
- return false;
- }
- public void StartKinesis() {
- movement.transform.position = position;
- movement.transform.eulerAngles = eulerAngles;
- movement.SetDirection(moveDirection);
- }
- public void UpdateKinesis() {
- if (!movement.IsStop) { return; }
- controller.TransitionKinesis(new KinesisIdle());
- }
- public void FinishKinesis() {
- movement.StopMovement();
- }
-
- public void AnimationEffects() { }
- public void AnimationEnd() { }
- public void AnimationExit() { }
-
- }
-}
diff --git a/Packages/Character/Runtime/Presets/KinesisMove.cs.meta b/Packages/Character/Runtime/Presets/KinesisMove.cs.meta
deleted file mode 100644
index b3e1b5a..0000000
--- a/Packages/Character/Runtime/Presets/KinesisMove.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 5c1bd98cf0e078140ab99d637e398ed1
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/Character/package.json b/Packages/Character/package.json
index 6b5e735..c46a18a 100644
--- a/Packages/Character/package.json
+++ b/Packages/Character/package.json
@@ -14,8 +14,5 @@
"description": "",
"path": "Samples"
}
- ],
- "dependencies": {
- "com.unity.inputsystem": "1.7.0"
- }
+ ]
}
\ No newline at end of file
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
index 1fe95e6..55e2f01 100644
--- a/Packages/packages-lock.json
+++ b/Packages/packages-lock.json
@@ -283,9 +283,7 @@
"version": "file:Character",
"depth": 0,
"source": "embedded",
- "dependencies": {
- "com.unity.inputsystem": "1.7.0"
- }
+ "dependencies": {}
},
"muhua-follow-tag": {
"version": "file:FollowTag",