You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
| 
											2 years ago
										 | using Entitas; | ||
|  | using UnityEngine; | ||
|  | using Game; | ||
|  | 
 | ||
|  | [Game] | ||
|  | public class HpComponent : IComponent | ||
|  | { | ||
|  |     public MetaData<float> Hp = new MetaData<float>(); | ||
|  |     public MetaData<float> HpMax = new MetaData<float>(); | ||
|  |     public MetaData<float> Shield = new MetaData<float>(); | ||
|  |     public MetaData<float> ShieldMax = new MetaData<float>(); | ||
|  |     public MetaData<float> Stun = new MetaData<float>(); | ||
|  |     public MetaData<float> StunMax = new MetaData<float>(); | ||
|  |     public MetaData<bool> IsDamaged = new MetaData<bool>(); | ||
|  |     public Vector3 LastDamageDir = Vector3.zero; | ||
|  |     public EHitLevel LastDamageLevel = EHitLevel.None; | ||
|  |     public int LastDmg = 0; //伤害显示合并 | ||
|  |     public float ShieldRecoverTimeMax = 0; //护盾恢复延迟 | ||
|  |     public float ShieldRecoverTime = 0; //护盾恢复延迟当前值 | ||
|  |     public float ShieldRecover = 0; //护盾恢复速度(点/秒) | ||
|  |     public float StunRecoverTimeMax = 0; //眩晕恢复延迟 | ||
|  |     public float StunRecoverTime = 0; //眩晕恢复延迟当前值 | ||
|  |     public float StunRecover = 0; //眩晕恢复速度(点/秒) | ||
|  |     public float DmgShowTime = 0; | ||
|  |     public bool IsAlive = true; | ||
|  |     public bool IsDying = false; | ||
|  |     public float DyingTime = 0; | ||
|  | } | ||
|  | 
 | ||
|  | namespace Game | ||
|  | { | ||
|  |     public abstract partial class Util | ||
|  |     { | ||
|  |         public static void EntityDie(GameEntity entity) | ||
|  |         { | ||
|  |             Util.EntityStopMove(entity.ID()); | ||
|  |             entity.hp.IsAlive = false; | ||
|  |             entity.view.Material.SetColor("_FlashColor", new Color(0.5f, 0.5f, 0.5f, 1f)); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void EntityReborn(GameEntity entity) | ||
|  |         { | ||
|  |             entity.hp.IsAlive = true; | ||
|  |             entity.hp.Hp.Value = entity.hp.HpMax.Value; | ||
|  |             entity.animation.ResetMsg = true; | ||
|  |             entity.view.Material.SetColor("_FlashColor", new Color(1f, 1f, 1f, 1f)); | ||
|  |             entity.view.GameObjectLogic.SetActive(true); | ||
|  |             entity.OnCreate(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void ClearHp(GameEntity entity) | ||
|  |         { | ||
|  |             var hp = entity.hp; | ||
|  |             hp.LastDmg = 0; | ||
|  |             hp.DmgShowTime = 0; | ||
|  |             hp.IsAlive = true; | ||
|  |             hp.IsDying = false; | ||
|  |             hp.DyingTime = 0; | ||
|  |             hp.IsDamaged.Value = false; | ||
|  |             hp.LastDamageDir = Vector3.zero; | ||
|  |             hp.LastDamageLevel = EHitLevel.None; | ||
|  |         } | ||
|  |     } | ||
|  | } |