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(); }
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 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; } }
// 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); } }
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); }
public void SetOwner(FireSlime1 owner) { this.owner = owner; }