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); }
public override void Enter() { base.Enter(); FireSlime1AI fireSlime1AI = (FireSlime1AI)GetAI(); FireSlime1 fireSlime1 = (FireSlime1)fireSlime1AI.getCharacter(); GameObject myBody = fireSlime1.GetGameObject(); attackRange = fireSlime1.getAttr().getAttackRange(); }
void Start() { currentDistance = 0; if (owner == null) { Debug.Log("没有拥有者"); } maxDistance = owner.getAttr().getAttackRange(); ownerPos = owner.GetGameObject().transform.position; }
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); }
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; } }
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; }
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); }
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); }