public void SetParent(PaddockController paddock) { Owner = null; State = DragonState.InPaddock; MoveToRandomPointInPaddock(); }
private IEnumerator SleepBehaviors() { dragon.Sleep(); yield return(new WaitForSeconds(5)); State = (DragonState)Random.Range(0, 5); }
private IEnumerator WalkBehaviors() { DoRandomNonFlyingAnimation(); yield return(new WaitForSeconds(3)); FaceRandomGroundDirection(); float TimeWalking = 0; dragon.Walk(); while (true) { yield return(new WaitForEndOfFrame()); transform.position += transform.forward * WalkSpeed * Time.deltaTime; TimeWalking += Time.deltaTime; if (TimeWalking > 4f) // time the animation takes { int WhatToDoNext = Random.Range(0, 20); if (WhatToDoNext <= 4) { State = (DragonState)Random.Range(0, 5); yield return(null); } else { dragon.Walk(); TimeWalking = 0; } } } }
// Not going to worry about AI if I have these controls for now. void PlayerInput() { // Ignore input while fire breathing if (state == DragonState.FireBreathing) { return; } if (Input.GetKey(KeyCode.Space)) { DoBreathAttack(); return; } state = DragonState.Idle; MoveDirection = Vector3.zero; if (Input.GetKey(KeyCode.I)) { OnMoveUp(); return; } if (Input.GetKey(KeyCode.K)) { OnMoveDown(); return; } if (Input.GetKey(KeyCode.J)) { OnMoveLeft(); return; } if (Input.GetKey(KeyCode.L)) { OnMoveRight(); return; } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Nofly") { DS_State = DragonState.Climb; } }
public void Restart() { state = DragonState.Idle; Health = MaxHealth; gameObject.transform.position = StartingPosition; gameObject.transform.rotation = StartingRotation; HasController = false; }
private void OnTriggerExit(Collider other) { if (other.gameObject.tag == "Player") { state = DragonState.Normal; shout = false; } }
void setWalking() { stepsAudioSource.Play(); breathingAudioSource.Play(); agent.isStopped = false; state = DragonState.Walking; animator.SetTrigger("walk"); walkingSet = true; }
// Update is called once per frame void Update() { switch (currentState) { case DragonState.dead: if (timer <= 0.0f) { currentState = DragonState.enter; timer = 5.0f; // 5 seconds to descend stallHealth.GetComponentInParent <Canvas>().enabled = true; reticle.GetComponent <SpriteRenderer>().enabled = true; weapon.GetComponent <SpriteRenderer>().enabled = true; tempPos = this.transform.position; tempPos.y -= 3.0f; GameObject.Find("Stress Button").GetComponent <StressController>().increaseStressRate(); } break; case DragonState.enter: this.transform.position = Vector3.MoveTowards(this.transform.position, tempPos, 0.02f); if (timer <= 0.0f) { currentState = DragonState.attack; } break; case DragonState.attack: damageStall(); break; case DragonState.exit: this.transform.position = Vector3.MoveTowards(this.transform.position, tempPos, 0.1f); if (timer <= 0.0f) { currentState = DragonState.dead; timer = timeDragonDescend; stallHealth.value = stallHealth.maxValue; dragonHealth = maxDragonHealth; } break; } if (isTimerRunning) { timer -= Time.deltaTime; } if (isReloading) { reloadTimer -= Time.deltaTime; if (reloadTimer <= 0) { isReloading = false; reloadTimer = maxReloadTime; } } }
// Use this for initialization void Start() { currentState = DragonState.dead; isTimerRunning = true; timer = timeDragonDescend; dragonHealth = maxDragonHealth; reloadTimer = maxReloadTime; isReloading = false; }
void setAttacking() { walkingSet = false; breathingAudioSource.Stop(); stepsAudioSource.Stop(); agent.isStopped = true; state = DragonState.Attacking; animator.SetTrigger("breathFire"); }
void Hunt() { transform.Translate(Vector3.forward * FL_MoveSpeed / 4 * Time.deltaTime); transform.Rotate(Vector3.up, FL_Turnspeed * Time.deltaTime); if (Vector3.Distance(transform.position, Target.transform.position) < fl_chaseRange) { DS_State = DragonState.Chase; } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Player") { //playerPos = other.transform.position; state = DragonState.Chase; shout = true; } }
private IEnumerator IdleBehaviors() { // find a fun way to start being idle DoRandomNonFlyingAnimation(); yield return(new WaitForSeconds(Random.Range(3f, 7f))); State = (DragonState)Random.Range(0, 5); }
public bool OnMessageRecieved <T>(T msg) where T : class, IActorMessage { if (this.DragonState == RolePlayingGame.DragonState.Dead) { return(true); } int damage = 0; if (msg is Attack) { damage = (msg as Attack).Damage; } else { throw new NotImplementedException(); } bool isHit = (rand.Next() % 2 == 0); if (isHit) { Telegraph.Instance.Tell(new PrintHit((msg as Attack), "Dragon")); hitPoints -= damage; if (hitPoints <= 0) { Telegraph.Instance.Tell(new PrintDeath("Dragon")); this.DragonState = RolePlayingGame.DragonState.Dead; return(true); } } else { Telegraph.Instance.Tell(new PrintMiss()); } bool useBreath = (rand.Next() % 2 == 0); Attack attack = null; if (useBreath) { attack = new Breath(); } else { attack = new Claw(); } Telegraph.Instance.Tell(attack); Telegraph.Instance.Tell(new PrintAttack(attack, "Dragon")); return(true); }
public void SetParent(KnightController knight) { Owner = knight; Owner.Dragons.Add(this); State = DragonState.Attached; GetComponent<CircleCollider2D>().enabled = false; var diff = Owner.transform.localPosition - gameObject.transform.localPosition; Walk(Owner.TargetPosition - diff); }
void exitDragonState() { timer = 5.0f; currentState = DragonState.exit; stallHealth.GetComponentInParent <Canvas>().enabled = false; reticle.GetComponent <SpriteRenderer>().enabled = false; weapon.GetComponent <SpriteRenderer>().enabled = false; tempPos = this.transform.position; tempPos.y += 3.0f; GameObject.Find("Stress Button").GetComponent <StressController>().decreaseStressRate(); }
protected void FixedUpdate() { if (TimeDamageCount <= 0) { State = DragonState.run; } else { State = DragonState.damage; } Move(); }
void Climb() { RB.velocity = Vector3.zero; if (transform.position.y < FL_ClimbHeight) { transform.Translate(Vector3.up * FL_MoveSpeed / 2 * Time.deltaTime); } else { DS_State = DragonState.Hunt; } }
public void resetDragon() { this.transform.position = initPosition; currentState = DragonState.dead; isTimerRunning = true; timer = timeDragonDescend; dragonHealth = maxDragonHealth; reloadTimer = maxReloadTime; isReloading = false; stallHealth.value = stallHealth.maxValue; stallHealth.GetComponentInParent <Canvas>().enabled = false; reticle.GetComponent <SpriteRenderer>().enabled = false; weapon.GetComponent <SpriteRenderer>().enabled = false; }
public void SetState(DragonState dragonState) { if (currentState != null) { currentState.OnStateExit(); } currentState = dragonState; if (currentState != null) { currentState.OnStateEnter(); } }
public void TakeDamage(int damage, Vector3 location, Controller player) { // No More Damage after hitting Zero // Ignore arrows that don't have damage. if ((damage < 1) || (Health < 1)) { return; } Health -= damage; player.DamageDelt += damage; // Death Check if (Health <= 0) { Debug.Log("Dead"); state = DragonState.Dying; BreathTimeCounter = 0; BurnLogic.instance.GotLastHit = player; Destroy(BurnLogic.instance.CurrentMusic); FlameSource.PlayOneShot(DeadSound); } // Spawn effect based on Damage if (damage == 1) { Instantiate(Star1, location, Quaternion.identity); return; } if (damage == 2) { Instantiate(Star2, location, Quaternion.identity); return; } if (damage >= 3) { Instantiate(Star3, location, Quaternion.identity); return; } }
void DoBreathAttack() { if (Health <= (((float)MaxHealth) * NoAttackUnderPercent)) { // Don't do a breath attack under 1% return; } state = DragonState.FireBreathing; MoveDirection = Vector3.zero; BreathTimeCounter = 0; BreathStep = 0; BreathStepList.Clear(); BreathStepList.Add(true); // Pre Breath BreathStepList.Add(true); // Frame 1 BreathStepList.Add(true); // Frame 2 BreathStepList.Add(true); // Frame 3 BreathStepList.Add(true); // Frame 4 BreathStepList.Add(true); // Frame 5 BreathStepList.Add(true); // Frame 6 BreathStepList.Add(true); // Frame 7 FlameSource.PlayOneShot(FlameAttack, .7f); }
void AnimateDying() { currentSprite = Dead; BreathTimeCounter += Time.fixedDeltaTime; if (BreathTimeCounter < 1) { return; } float value = BreathTimeCounter - 1; float angle = value * (DyingAngle / DyingTime); angle = Mathf.Clamp(angle, 0f, DyingAngle); Quaternion rot = Quaternion.Euler(angle, 180f, 0); gameObject.transform.rotation = rot; if (value > DyingTime) { state = DragonState.Dead; BurnLogic.instance.OnGameEnd(); } }
void AnimateFire() { BreathTimeCounter += Time.fixedDeltaTime; if (BreathTimeCounter < 1) { return; } // Set Frame 1 if ((BreathStepList[0]) && (BreathTimeCounter >= 1f)) { BreathStepList[0] = false; currentFlameSprite = Flame1; FlameLight1.SetActive(true); FlameTrigger1.SetActive(true); FlameSpritePlane.SetActive(true); } // Set Frame 2 if ((BreathStepList[1]) && (BreathTimeCounter >= 1.2f)) { BreathStepList[1] = false; currentFlameSprite = Flame2; } // Set Frame 3 if ((BreathStepList[2]) && (BreathTimeCounter >= 1.4f)) { BreathStepList[2] = false; currentFlameSprite = Flame3; FlameLight2.SetActive(true); FlameTrigger2.SetActive(true); } // Set Frame 4 if ((BreathStepList[3]) && (BreathTimeCounter >= 1.6f)) { BreathStepList[3] = false; currentFlameSprite = Flame4; FlameLight1.SetActive(false); } // Set Frame 5 if ((BreathStepList[4]) && (BreathTimeCounter >= 1.8f)) { BreathStepList[4] = false; currentFlameSprite = Flame5; FlameLight3.SetActive(true); FlameTrigger3.SetActive(true); } // Set Frame 6 if ((BreathStepList[5]) && (BreathTimeCounter >= 2.0f)) { BreathStepList[5] = false; currentFlameSprite = Flame6; FlameLight2.SetActive(false); } // Set Frame 7 if ((BreathStepList[6]) && (BreathTimeCounter >= 2.2f)) { BreathStepList[6] = false; currentFlameSprite = Flame7; } // Done if ((BreathStepList[7]) && (BreathTimeCounter >= 2.4f)) { BreathStepList[7] = false; currentFlameSprite = Flame1; FlameLight1.SetActive(false); FlameLight2.SetActive(false); FlameLight3.SetActive(false); FlameTrigger1.SetActive(false); FlameTrigger2.SetActive(false); FlameTrigger3.SetActive(false); FlameSpritePlane.SetActive(false); state = DragonState.Idle; } Material[] mats = FameSpriteR.materials; mats[0] = currentFlameSprite; FameSpriteR.materials = mats; }
public override void OnMoveDown() { MoveDirection = Vector3.back; state = DragonState.Walking; }
public override void OnMoveLeft() { MoveDirection = Vector3.left; state = DragonState.Walking; }
// Use this for initialization void Start() { RB = GetComponent <Rigidbody>(); DS_State = DragonState.Wake; }
public override void OnMoveRight() { MoveDirection = Vector3.right; state = DragonState.Walking; }
public override void OnStopMove() { MoveDirection = Vector3.zero; state = DragonState.Idle; }
private IEnumerator FlyBehaviors() { if (transform.position.y < 1) // if we're on the ground, take off { dragon.TakeOff(); yield return(new WaitForSeconds(5)); // time the animation takes } if (Random.Range(0, 4) == 2) { dragon.FlyFlameAttack(); yield return(new WaitForSeconds(3)); } bool FlyingUp = FaceRandomSkyDirectionAndReturnTrueIfFlyingUp(); if (FlyingUp) { dragon.FlyForward(); float FlyTime = Random.Range(10, 30); float FlyTimeSoFar = 0; while (true) { yield return(new WaitForEndOfFrame()); transform.position += (transform.forward * FlyForwardSpeed * Time.deltaTime); FlyTimeSoFar += Time.deltaTime; if (FlyTimeSoFar >= FlyTime) { State = DragonState.flying; yield return(null); yield break; } } } else { float TimeGliding = 0; dragon.FlyGlide(); while (true) { yield return(new WaitForEndOfFrame()); transform.position += (transform.forward * FlyDownSpeed * Time.deltaTime); TimeGliding += Time.deltaTime; if (TimeGliding > 3f) // time the animation takes { dragon.FlyGlide(); TimeGliding = 0; } if (transform.position.y <= HeightToStartLandingAt) { transform.position = new Vector3(transform.position.x, 0, transform.position.z); transform.localEulerAngles = new Vector3(0, transform.localEulerAngles.y, transform.localEulerAngles.z); dragon.Land(); yield return(new WaitForSeconds(4)); // time the animation takes State = (DragonState)Random.Range(0, 5); yield return(null); yield break; // is this needed to stop the routine?? } } } }
public override void OnMoveUp() { MoveDirection = Vector3.forward; state = DragonState.Walking; }
public void Release() { State = DragonState.InPaddock; }