public LogicEntity CreateBullet(LogicEntity releaserEntity) { AttrComponent attr = releaserEntity.GetComponent <AttrComponent>(); LogicEntity result = CreateEntityByResPath(""); result.SetLifeTime(attr.GetAttr(Attr.BulletLife)); result.AddComponent <BulletComponent>(releaserEntity); LogicMove moveComp = result.AddComponent <LogicMove>(); moveComp.AddMove(releaserEntity.LogicTran.forward, attr.GetAttr(Attr.BulletSpeed), attr.GetAttr(Attr.BulletLife), null); return(result); }
public override bool LogicTick(StateMachine machine, int ms) { AttrComponent attr = machine.HostEntity.GetComponent <AttrComponent>(); _flagTime += ms; if (!_hasTriggerBullet && _flagTime > attr.GetAttr(Attr.BulletDelay)) { EntityManager.Instance.CreateBullet(machine.HostEntity); _hasTriggerBullet = true; _flagTime = 0; } return(_hasTriggerBullet && _flagTime > attr.GetAttr(Attr.AttackAfter)); }
public void ReciveEffect(EffectData effectData) { ProcessEffect(beforeProcesses, ref effectData); CaculateRealHealNum(effectData); ProcessEffect(afterProcesses, ref effectData); if (effectData == null) { return; } if (effectData.HealNum != 0) { _attrAgent.ChangeAttr(Attr.Hp, effectData.HealNum); } for (int i = 0; i < effectData.ChagneAttr.Length; i++) { _attrAgent.ChangeAttr(effectData.ChagneAttr[i]); } if (_attrAgent.GetAttr(Attr.Hp) <= 0) { Die(); } }
public override bool LogicTick(StateMachine machine, int ms) { if (!_isAvaliable) { return(true); } _isAvaliable = false; LogicMove lm = machine.HostEntity.GetComponent <LogicMove>(); if (lm != null) { AttrComponent attr = machine.HostEntity.GetComponent <AttrComponent>(); SafeFloat speed = attr.GetAttr(Attr.MoveSpeed); lm.MoveOneStep(speed * new SafeV3(_args.DirX, 0, _args.DirZ)); } return(false); }
private bool TryHit(LogicEntity target) { EffectReceiver receiver = target.GetComponent <EffectReceiver>(); if (receiver == null) { return(false); } LogicEntity releaser = EntityManager.Instance.GetEntity(this._releaserKey); if (releaser == null) { return(true); } AttrComponent attr = releaser.GetComponent <AttrComponent>(); EffectData data = new EffectData(); data.OpEntityKey = this._releaserKey; data.ChagneAttr = new AttrPair[] { new AttrPair(Attr.Hp, attr.GetAttr(Attr.Attack)) }; receiver.ReciveEffect(data); return(true); }