protected void Add(Type type, System.Object data, BehaviorPriority priority, float lifeTime) { this.priority = priority; BaseBehavior newBehavior = ScriptableObject.CreateInstance(type) as BaseBehavior; newBehavior.Init(priority, data, lifeTime); behaviors.AddLast(newBehavior); }
public virtual void Init(BehaviorPriority p, System.Object data, float lifeTime) { this.priority = p; //각 행동에 필요한 데이터를 Object형으로 일반화해서 가져온다 //제너릭 타입을 가져와서 필요한 타입으로 캐스팅해서 사용 this.data = data; this.lifeTime = (lifeTime <= 0) ? float.MaxValue : lifeTime; }
public void Init(Vector3 dest, Vector3 curPos, BehaviorPriority p) { Vector3 subPos = dest - curPos; float sqrJumpMaxDist = jumpMaxDist * jumpMaxDist; if (subPos.sqrMagnitude > sqrJumpMaxDist) { Vector3 jumpStartPt = dest - subPos.normalized * jumpMaxDist; Add(Type.GetType("RunBehavior"), new RunBehaviorData(jumpStartPt), p, 5.0f); } Add(Type.GetType("JumpBehavior"), new JumpBehaviorData(dest, 1), p, 0); Add(Type.GetType("IdleBehavior"), null, p, 3.0f); }
public override BehaviorPriority DeterminePriority(BehaviorContext context) { foreach (Entity other in context.OtherEntities) { if (other.IsAiControlled) { continue; } var offset = Entity.PositionData.Placement.Pos - other.PositionData.Placement.Pos; if (offset.Length < 4) { return(BehaviorPriority.Value(4)); } } return(BehaviorPriority.NA); }
public override BehaviorPriority DeterminePriority(BehaviorContext context) { foreach (Entity other in Entity.Universe.GetEntities()) { if (other.Has <AiComponent>()) { continue; } var offset = Entity.Get <PositionComponent>().Placement.Pos - other.Get <PositionComponent>().Placement.Pos; if (offset.Length < 4) { return(BehaviorPriority.Value(4)); } } return(BehaviorPriority.NA); }
public void Init(GameObject laserPrefab, Transform laserPt, float laserLength, float laserDamage, Vector3 firstPos, Vector3 secondPos, AudioSource audioPlayer, Mob target, float laserTime, float laserChargeTime, BehaviorPriority p) { Add(Type.GetType("AnimEventBehavior"), new AnimEventBData("curse"), p, 3.0f); Add(Type.GetType("RunBehavior"), new RunBehaviorData(firstPos), p, 0.0f); Add(Type.GetType("AnimEventBehavior"), new AnimEventBData("laser", audioPlayer, "LaserCharge", 1.0f), p, laserChargeTime); Add(Type.GetType("LaserBehavior"), new LaserBData(target, audioPlayer, "Laser", 0.25f), p, laserTime + 0.5f); Add(Type.GetType("RunBehavior"), new RunBehaviorData(secondPos), p, 0.0f); Add(Type.GetType("AnimEventBehavior"), new AnimEventBData("ball", audioPlayer, "BossBallAura", 0.5f), p, 2.0f); Add(Type.GetType("AnimEventBehavior"), new AnimEventBData("curse"), p, 3.0f); }
public override BehaviorPriority DeterminePriority(BehaviorContext context) { return(BehaviorPriority.Value(1)); }
public BehaviorBase() { Targets = new List <StateDevice>(); Priority = BehaviorPriority.Medium; }