Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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;
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
 public override BehaviorPriority DeterminePriority(BehaviorContext context)
 {
     return(BehaviorPriority.Value(1));
 }
Ejemplo n.º 8
0
 public BehaviorBase()
 {
     Targets  = new List <StateDevice>();
     Priority = BehaviorPriority.Medium;
 }