This commit is contained in:
CortexCore
2023-10-24 23:37:59 +08:00
parent 325f63d6bc
commit 3e39e627bc
388 changed files with 29043 additions and 889 deletions

View File

@@ -62,6 +62,9 @@ namespace BITKit.Entities
/// </summary>
public interface IEntityMovement:IStateMachine<IEntityMovementState>
{
Vector3 Position { get; set; }
Quaternion Rotation { get; set; }
Vector3 Forward { get; }
/// <summary>
/// 视角中心,通常是摄像机的位置
/// </summary>

View File

@@ -13,16 +13,40 @@ namespace BITKit
[SerializeField] private new Rigidbody rigidbody;
[Inject] private IHealth _health;
[Inject(true)] private IEntityOverride _override;
#endregion
public override void OnStart()
{
if (_override is not null)
{
_override.OnOverride += (x) =>
{
agent.isStopped = x;
};
}
_health.OnSetAlive += OnSetAlive;
_health.OnSetHealthPoint += OnSetHP;
}
#region
public Vector3 Position
{
get=>transform.position;
set=>transform.position=value;
}
public Quaternion Rotation
{
get=>transform.rotation;
set=>transform.rotation=value;
}
public Vector3 Forward => transform.forward;
public Vector3 ViewCenter { get; set; }
public Quaternion ViewRotation { get; set; }
public Vector3 LocomotionBasedVelocity { get; private set; }

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
namespace BITKit.Entities.Movement
{
public class RigidbodyBasedMovement : StateBasedComponent<IEntityMovementState>,IEntityMovement
{
[SerializeField] private new Rigidbody rigidbody;
[SerializeField] private Animator animator;
public Vector3 Position { get; set; }
public Quaternion Rotation { get; set; }
public Vector3 Forward { get; }
public Vector3 ViewCenter { get; }
public Quaternion ViewRotation { get; }
public Vector3 LocomotionBasedVelocity { get; }
public Vector3 Velocity { get;private set; }
public Vector3 GroundVelocity { get; }
public Vector3 AngularVelocity { get; }
public bool IsGrounded { get; }
public void SyncMovement(Vector3 velocity, Vector3 position, Quaternion rotation, bool isGrounded)
{
}
public void Movement(Vector3 relativeVector)
{
}
public void Movement(InputAction.CallbackContext context)
{
}
public void ExecuteCommand<T>(T command = default)
{
}
public event Action<object> OnCommand;
public override void OnFixedUpdate(float deltaTime)
{
rigidbody.MovePosition(rigidbody.position + Velocity * deltaTime
);
}
private void OnAnimatorMove()
{
Velocity = animator.velocity;
}
}
}