修改字符模块

This commit is contained in:
MuHua-123
2025-06-07 16:10:24 +08:00
parent 937595b3b1
commit dedc290469
64 changed files with 636 additions and 889 deletions
@@ -0,0 +1,26 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua {
/// <summary>
/// 空闲 - 运动
/// </summary>
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();
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 29150243edc07d0429fea37464e830a7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+102
View File
@@ -0,0 +1,102 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua {
/// <summary>
/// 跳跃 - 运动
/// </summary>
public class KJump : IKinesis {
/// <summary> 基础角色 </summary>
public readonly MCharacter character;
/// <summary> 结束跳跃 </summary>
public bool isEndJump;
/// <summary> 是否接地 </summary>
public bool isGrounded;
/// <summary> 允许转换 </summary>
public bool isTransition;
/// <summary> 跳跃高度 </summary>
public float jumpHeight;
/// <summary> 衰退速度 </summary>
public float decaySpeed;
/// <summary> 移动速度 </summary>
public float moveSpeed = 2;
/// <summary> 加速度 </summary>
public float acceleration = 15;
/// <summary> 移动方向 </summary>
public Vector2 moveDirection;
/// <summary> 初始位置 </summary>
public Vector3 position;
/// <summary> 初始角度 </summary>
public Vector3 eulerAngles;
/// <summary> 是否旋转 </summary>
public bool isRotation;
/// <summary> 初始设置 </summary>
public bool isInitial = false;
/// <summary> 变换器 </summary>
public Transform transform => character.transform;
/// <summary> 动画器 </summary>
public Animator animator => character.animator;
/// <summary> 运动器 </summary>
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);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d61c404e3dc615b4eb590448b876863c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,73 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua {
/// <summary>
/// 移动 - 运动
/// </summary>
public class KMove : IKinesis {
/// <summary> 基础角色 </summary>
public readonly MCharacter character;
/// <summary> 移动速度 </summary>
public float moveSpeed = 2;
/// <summary> 加速度 </summary>
public float acceleration = 15;
/// <summary> 移动方向 </summary>
public Vector2 moveDirection;
/// <summary> 初始位置 </summary>
public Vector3 position;
/// <summary> 初始角度 </summary>
public Vector3 eulerAngles;
/// <summary> 是否旋转 </summary>
public bool isRotation;
/// <summary> 初始设置 </summary>
public bool isInitial = false;
/// <summary> 变换器 </summary>
public Transform transform => character.transform;
/// <summary> 动画器 </summary>
public Animator animator => character.animator;
/// <summary> 运动器 </summary>
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();
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e2b41872ba018e447a649cb6bb35059f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: