This commit is contained in:
CortexCore
2023-10-06 23:43:19 +08:00
parent ebf9c1f526
commit 2c4710bc5d
186 changed files with 111802 additions and 764 deletions

View File

@@ -14,7 +14,9 @@
"GUID:28c2d6a6727d47442a24a353f0d37846",
"GUID:14fe60d984bf9f84eac55c6ea033a8f4",
"GUID:d525ad6bd40672747bde77962f1c401e",
"GUID:be17a8778dbfe454890ed8279279e153"
"GUID:be17a8778dbfe454890ed8279279e153",
"GUID:96f476e982d6fb945bfc9140ba094b7f",
"GUID:4307f53044263cf4b835bd812fc161a4"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@@ -0,0 +1,12 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BITKit.Entities.Movement
{
public sealed class GravityDamage:IDamageType
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cdf96f81bc60af44e8233982c2183015
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -5,6 +5,9 @@ using BITKit;
using BITKit.Animations;
using BITKit.StateMachine;
using System.Linq;
using BITFALL.Player.Equip;
using Cinemachine;
namespace BITKit.Entities
{
public interface IEquipBase : IEntryElement, IAwake, IStart, IUpdate
@@ -31,10 +34,17 @@ namespace BITKit.Entities
public virtual void EquipEvent(string eventName){}
public virtual void AnimationEvent(string eventName){}
}
public class EntityEquipment : EntityComponent
[CustomType(typeof(IEquipService))]
public class EntityEquipment : EntityComponent,IEquipService
{
public EntryGroup<IEquipBase> equips = new();
public IOptional<float> Zoom { get; } = new Optional<float>(){Value = 1};
public float InitialFov;
[SerializeField] private CinemachineVirtualCamera virtualCamera;
protected IEquipBase entryComplete;
private PlayerConfig playerConfig;
public override void OnStart()
{
base.OnStart();
@@ -56,6 +66,13 @@ namespace BITKit.Entities
{
entryComplete.OnUpdate(deltaTime);
}
var current = virtualCamera.m_Lens.FieldOfView;
current= Mathf.Lerp(current,Zoom.Allow ? InitialFov / Zoom.Value : PlayerConfig.Singleton.Fov , deltaTime * 5);
current = Mathf.Clamp(current, 10, PlayerConfig.Singleton.Fov);
virtualCamera.m_Lens.FieldOfView = current;
}
}
}

View File

@@ -37,8 +37,18 @@ namespace BITKit.Entities
public interface IHealth
{
/// <summary>
/// 当设置HP时的回调
/// </summary>
public event Action<int> OnSetHealthPoint;
/// <summary>
/// 当设置生存状态时的回调
/// </summary>
public event Action<bool> OnSetAlive;
/// <summary>
/// 当受到伤害时的回调
/// </summary>
public event Func<DamageMessage,int,int> OnDamage;
int HealthPoint { get; set; }
int MaxHealthPoint { get; set; }
bool IsAlive { get; }
@@ -50,14 +60,13 @@ namespace BITKit.Entities
[SerializeField] private int healthPoint = 100;
[SerializeField] private int maxHealthPoint = 100;
[Header(Constant.Header.Events)]
[SerializeField] private UnityEvent<bool> onSetAlive = new();
[Header(Constant.Header.Providers)] [SerializeField, SerializeReference, SubclassSelector]
[Obsolete]
private IHealthCallback[] additiveCallback;
public event Action<int> OnSetHealthPoint;
public event Action<bool> OnSetAlive;
public event Func<DamageMessage,int, int> OnDamage;
public int HealthPoint
{
@@ -72,7 +81,7 @@ namespace BITKit.Entities
public bool IsAlive { get; private set; }
public override void OnAwake()
{
entity.AddListener<DamageMessage>(OnDamage);
entity.AddListener<DamageMessage>(OnGetDamage);
}
public override void OnStart()
@@ -95,11 +104,6 @@ namespace BITKit.Entities
x.OnSetHP(newHP);
}
foreach (var x in additiveCallback)
{
x.OnSetHP(newHP);
}
OnSetHealthPoint?.Invoke(newHP);
}
@@ -110,12 +114,11 @@ namespace BITKit.Entities
{
x.OnSetAlive(alive);
}
foreach (var x in additiveCallback)
{
x.OnSetAlive(alive);
}
// foreach (var x in additiveCallback)
// {
// x.OnSetAlive(alive);
// }
OnSetAlive?.Invoke(alive);
onSetAlive.Invoke(alive);
}
private void AddHP(int hp)
@@ -123,10 +126,15 @@ namespace BITKit.Entities
OnHealthPointChangedInternal(healthPoint, healthPoint += hp);
}
private void OnDamage(DamageMessage damageMessage)
private void OnGetDamage(DamageMessage damageMessage)
{
if (damageMessage.target == entity)
AddHP(-damageMessage.damage);
if (damageMessage.target != entity) return;
var damage = damageMessage.damage;
foreach (var x in OnDamage.CastAsFunc())
{
damage = x.Invoke(damageMessage,damage);
}
AddHP(-damage);
}
#if UNITY_EDITOR
[BIT]

View File

@@ -6,7 +6,10 @@
"GUID:709caf8d7fb6ef24bbba0ab9962a3ad0",
"GUID:f822dbf6fdfd4a5469cccaa2e4eed3b6",
"GUID:f51ebe6a0ceec4240a699833d6309b23",
"GUID:75469ad4d38634e559750d17036d5f7c"
"GUID:75469ad4d38634e559750d17036d5f7c",
"GUID:d525ad6bd40672747bde77962f1c401e",
"GUID:49b49c76ee64f6b41bf28ef951cb0e50",
"GUID:508392158bd966c4d9c21e19661a441d"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@@ -1,3 +1,4 @@
using BITKit.Sensors;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Interactions;
@@ -6,24 +7,16 @@ namespace BITKit.Entities.Player
public class EntityInteractive : EntityPlayerComponent
{
[Header(Constant.Header.Settings)]
public float distance;
public LayerMask layerMask;
[Header(Constant.Header.Input)]
public InputActionReference interactiveAction;
private readonly InputActionGroup inputActionGroup = new();
[Header(Constant.Header.Gameobjects)]
[SerializeField] private Transform cameraTransform;
[SerializeReference, SubclassSelector] private ISensor sensor;
[Header(Constant.Header.InternalVariables)]
private ISelectable selected;
private IntervalUpdate cd = new(0.08f);
public override void OnUpdate(float deltaTime)
{
if (Physics.Raycast(cameraTransform.position,cameraTransform.forward, out var raycastHit, distance, layerMask,QueryTriggerInteraction.Collide))
if (sensor.Get().TryGetAny(x=>x.TryGetComponentAny<ISelectable>(out _),out var detected))
{
if (raycastHit.transform.TryGetComponentAny<ISelectable>(out var _detected))
if (detected.TryGetComponentAny<ISelectable>(out var _detected))
{
if (_detected == selected)
{
@@ -68,7 +61,7 @@ namespace BITKit.Entities.Player
}
public void Interactive(InputAction.CallbackContext context)
{
if (context.interaction is not PressInteraction || !context.performed) return;
if (context.interaction is not PressInteraction || !context.performed || cd.AllowUpdate is false) return;
var _selected = selected;
if (_selected is not MonoBehaviour monoBehaviour) return;
if (monoBehaviour.TryGetComponentAny<IAction>(out var action))

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e832535d9d9241a4a8f5ce3ca4bdfe10
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0de6b422fe6534e4c9d6d6cec7812dc1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,17 @@
{
"name": "BITKit.Entities.Value",
"rootNamespace": "",
"references": [
"GUID:14fe60d984bf9f84eac55c6ea033a8f4",
"GUID:709caf8d7fb6ef24bbba0ab9962a3ad0"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5a8522cbb18cbd74a847d0fd43c747cb
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BITKit.Entities.Value
{
/// <summary>
/// 实体属性接口,通常用于角色的可被数值化的属性
/// </summary>
public interface IEntityValue
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cd3c71baeb6c69642b7e53b45eca93e8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: