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

33 lines
825 B
C#
Raw Normal View History

2023-10-20 19:31:12 +08:00
using System.Collections;
using System.Collections.Generic;
using BITKit.FPS;
using UnityEngine;
namespace BITKit.Entities.Player.Feel
{
public sealed class PlayerHitMotion : EntityComponent
{
[SerializeField] private Spring3 spring;
[SerializeField] private LocationAdditive locationAdditive;
[SerializeField] private AnimationCurve damageBasedMotion;
public override void OnStart()
{
entity.AddListener<DamageMessage>(OnDamaged);
}
private void OnDamaged(DamageMessage obj)
{
2023-10-24 23:37:59 +08:00
if (obj.Target != entity) return;
var damage = damageBasedMotion.Evaluate(obj.Damage);
2023-10-20 19:31:12 +08:00
spring.value = new Vector3(damage.Random(), damage.Random(), damage.Random());
}
public override void OnUpdate(float deltaTime)
{
spring.Update(deltaTime,default);
locationAdditive.AddEuler(spring.value);
}
}
}