コード例 #1
0
    public override State Update()
    {
        base.Update();
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        if (currentAttackRate < attackRate)
        {
            currentAttackRate += Time.deltaTime;
        }
        else
        {
            if (!isFire)
            {
                GameObject go           = Object.Instantiate(meltedBomb, myBody.transform.position, Quaternion.identity);
                Vector3    iceBulletDir = (fireSlime1.currentTarget.transform.position - myBody.transform.position).normalized;
                go.GetComponent <Rigidbody2D>().velocity = iceBulletDir * BombSpeed * Time.deltaTime;
                go.GetComponent <MeltedBomb>().SetOwner(fireSlime1);
                isFire = true;
            }
            else
            {
                if (currentRecoverTime < recoverTime)
                {
                    currentRecoverTime += Time.deltaTime;
                }
                else
                {
                    return(State.SUCESSED);
                }
            }
        }
        return(State.RUNNING);
    }
コード例 #2
0
    public override void Enter()
    {
        base.Enter();
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        attackRange = fireSlime1.getAttr().getAttackRange();
    }
コード例 #3
0
    public override State Update()
    {
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        if (Vector3.Distance(myBody.transform.position, fireSlime1.currentTarget.transform.position) < attackRange)
        {
            return(State.SUCESSED);
        }
        return(State.FAILED);
    }
コード例 #4
0
    public override void Enter()
    {
        base.Enter();
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        if (childrenStates.Count == 0)
        {
            childrenStates.Add(fireSlime1AI.GetMoveToEnemyState());
            fireSlime1AI.GetMoveToEnemyState().currentState = State.NONE;
        }
    }
コード例 #5
0
    public override void Enter()
    {
        base.Enter();
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        attackRate         = fireSlime1.getAttr().getAttackRate();
        meltedBomb         = fireSlime1.GetMeltedBomb();
        currentAttackRate  = 0;
        currentRecoverTime = 0;
        isFire             = false;
    }
コード例 #6
0
    public override void Enter()
    {
        base.Enter();
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();

        if (childrenStates.Count == 0)
        {
            AddChild(fireSlime1AI.GetConditionHaveEnemy());
            fireSlime1AI.GetConditionHaveEnemy().currentState = State.NONE;
            AddChild(fireSlime1AI.GetDistanceCondition());
            fireSlime1AI.GetDistanceCondition().currentState = State.NONE;
            AddChild(fireSlime1AI.GetThrowMeltedBomb());
            fireSlime1AI.GetThrowMeltedBomb().currentState = State.NONE;
        }
    }
コード例 #7
0
    // Use this for initialization
    void Start()
    {
        for (int i = 0; i < fireSlimeBodies.Count; i++)
        {
            FireSlime fireSlime = new FireSlime(fireSlimeBodies[i], new FireSlimeAI(), new FireSlimeAttr(30, 5, 300, 0.5f, 8, new FireSlime1AtrrStrategy()), fusedLaser);
            fireSlimeBodies[i].SetActive(false);
            remainEnemys.Add(fireSlime);
        }

        for (int i = 0; i < fireSlime1Bodies.Count; i++)
        {
            FireSlime1 fireSlime1 = new FireSlime1(fireSlime1Bodies[i], new FireSlime1AI(), new FireSlimeAttr(30, 10, 300, 1f, 10, new FireSlime1AtrrStrategy()), meltedBomb);
            remainEnemys.Add(fireSlime1);
            fireSlime1Bodies[i].SetActive(false);
        }

        for (int i = 0; i < fireSlime2Bodies.Count; i++)
        {
            FireSlime2 fireSlime2 = new FireSlime2(fireSlime2Bodies[i], new FireSlime2AI(), new FireSlime2Attr(15, 5, 350, 0.4f, 8, new FireSlime2AttrStrategy()), iFire, rushFire);
            remainEnemys.Add(fireSlime2);
            fireSlime2Bodies[i].SetActive(false);
        }
        //InitEnemys();

        inDoor.SetActive(true);
        inDoor.GetComponent <SpriteRenderer>().sprite = CloseDoorSprite;

        inDoor.GetComponent <InDoor_FireSlimeScene>().SetRoom(this);
        outDoor.SetActive(true);
        outDoor.tag   = "Wall";
        outDoor.layer = LayerMask.NameToLayer("Wall");
        outDoor.GetComponent <SpriteRenderer>().sprite = CloseDoorSprite;

        for (int i = 0; i < prePos.Length; i++)
        {
            prePos[i] = -1;
        }

        for (int i = 0; i < spawnPostions.Count; i++)
        {
            GameObject iTarget = Instantiate(target, spawnPostions[i].transform.position, Quaternion.identity);
            targets.Add(iTarget);
        }
    }
コード例 #8
0
    public override State Update()
    {
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        if (fireSlime1.currentTarget != null)
        {
            return(State.SUCESSED);
        }

        fireSlime1.targets = Physics2D.OverlapCircleAll(myBody.transform.position, eyeViewDistance, LayerMask.GetMask("Player"));
        Collider2D[] targets = fireSlime1.targets;
        if (targets != null && targets.Length > 0)
        {
            fireSlime1.currentTarget = targets[0];
            return(State.SUCESSED);
        }
        return(State.FAILED);
    }
コード例 #9
0
    public override State Update()
    {
        base.Update();
        FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI();
        FireSlime1   fireSlime1   = (FireSlime1)fireSlime1AI.getCharacter();
        GameObject   myBody       = fireSlime1.GetGameObject();

        float distance = Vector3.Distance(myBody.transform.position, fireSlime1.currentTarget.transform.position);

        //如果有目标在视野内,则移动向目标,直到可以攻击到目标
        if (distance < attackRange)
        {
            myBody.GetComponent <Rigidbody2D>().velocity = Vector3.zero;
            return(State.SUCESSED);
        }

        Vector3 dir = (fireSlime1.currentTarget.transform.position - myBody.transform.position).normalized;

        myBody.GetComponent <Rigidbody2D>().velocity = dir * speed * Time.deltaTime;
        return(State.RUNNING);
    }
コード例 #10
0
 public void SetOwner(FireSlime1 owner)
 {
     this.owner = owner;
 }