BITFALL/Assets/Artists/Scripts/Feel/PlayerHitMotion.cs

36 lines
873 B
C#

using System.Collections;
using System.Collections.Generic;
using BITKit.FPS;
using UnityEngine;
namespace BITKit.Entities.Player.Feel
{
public sealed class PlayerHitMotion : EntityBehavior
{
[SerializeField] private Spring3 spring;
[SerializeField] private LocationAdditive[] locationAdditives;
[SerializeField] private AnimationCurve damageBasedMotion;
public override void OnStart()
{
UnityEntity.AddListener<DamageMessage>(OnDamaged);
}
private void OnDamaged(DamageMessage obj)
{
if (obj.Target != UnityEntity) return;
var damage = damageBasedMotion.Evaluate(obj.Damage);
spring.value = new Vector3(damage.Random(), damage.Random(), damage.Random());
}
public override void OnUpdate(float deltaTime)
{
spring.Update(deltaTime,default);
foreach (var x in locationAdditives)
{
x.AddEuler(spring.value);
}
}
}
}