コード例 #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
 void Start()
 {
     currentDistance = 0;
     if (owner == null)
     {
         Debug.Log("没有拥有者");
     }
     maxDistance = owner.getAttr().getAttackRange();
     ownerPos    = owner.GetGameObject().transform.position;
 }
コード例 #4
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);
    }
コード例 #5
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;
        }
    }
コード例 #6
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;
    }
コード例 #7
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);
    }
コード例 #8
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);
    }