void GetHurt(int damage) { currState = BehaviourStates.Hurt; if (uiHlth == null) { uiHlth = WorldUI.instance.CreateWhaleHealth(transform); } anim.SetTrigger(hurtID); }
void Swim() { cumBreathTime -= Time.deltaTime; Move(); ChangeDestination(); if (cumBreathTime <= 0) { targetHeight = breathingDepth; currState = BehaviourStates.MovingToSurface; } }
void Healed() { ResultScreen.instance.NumTreatedWhales++; currState = BehaviourStates.Breathing; currDestination = (waypointParent.TransformPoint(offset)); if (transform.parent == tyingPoint) { UnTie(); } anim.Rebind(); Destroy(uiHlth); }
void MoveToSurface() { Move(); ChangeDestination(); cumSurfaceTime -= Time.deltaTime; if (cumSurfaceTime <= 0) { cumBreathingTime = breathingTime; currState = BehaviourStates.Breathing; isOnSurface = true; } }
// Use this for initialization void Start() { anim = GetComponent <Animator>(); anim.SetFloat("offset", Random.Range(0f, 1f)); health = GetComponent <Health>(); rb = GetComponent <Rigidbody>(); GameManager.instance.RegisterFish(this); WorldUI.instance.CreateWhalePointer(transform); health.onDamage.AddListener(GetHurt); health.onDie.AddListener(Die); health.onHealed.AddListener(Healed); currState = BehaviourStates.Swimming; cumBreathTime = breathTime; currDestination = (waypointParent.TransformPoint(offset)); }
// Use this for initialization void Start() { movementAI.target = target; targetStatus = target.GetComponent <StatusManager>(); targetStat = target.GetComponent <StatSheet>(); goal = GoalStates.nothing; behaviour = BehaviourStates.preBattle; goalComplete = false; goalStarted = false; if (navMesh.enabled) { navMesh.isStopped = true; } navMesh.enabled = false; }
public void ChangeBehaviour() { decider = Random.Range(0, defensivePref + offensivePref + mixedPref); if (decider >= 0 && decider <= defensivePref) { behaviour = BehaviourStates.defensive; } else if (decider <= defensivePref + offensivePref) { behaviour = BehaviourStates.offensive; } else { behaviour = BehaviourStates.mixed; } }
void TakeABreath() { cumBreathingTime -= Time.deltaTime; chngDstnTimer += Time.deltaTime; Move(); ChangeDestination(); if (chngDstnTimer > obstcleDtctionFrqncy && Physics.Raycast(transform.position, transform.forward, obstacleAvoidanceDistance, obstacleMask)) { Debug.Log("Agay arehay ho" + gameObject.name); currDestination.x = transform.position.x - (transform.forward.x * obstacleAvoidanceDistance); currDestination.z = transform.position.z - (transform.forward.z * obstacleAvoidanceDistance); currDestination.y = targetHeight; Debug.DrawLine(transform.position, currDestination, Color.magenta, 10); chngDstnTimer = 0; } if (cumBreathingTime <= 0) { currState = BehaviourStates.Swimming; isOnSurface = false; targetHeight = swimmingDepth; cumBreathTime = breathTime; } }
void OffensiveBehaviour() { if (offensiveTimeCount >= offensiveTime) { currState = BehaviourStates.idling; idlingTimeCount = 0; } else { offensiveTimeCount += Time.deltaTime; if (target) { desiredShipSpeed = Mathf.Clamp01((GlobalFunctions.DistanceOnHorizontalPlane(transform.position, target.position) - attackingDistance) * distanceSpeedMultiplier); Vector3 localTarget = transform.InverseTransformPoint(target.position); float targetAngle = Mathf.Atan2(localTarget.x, localTarget.z) * Mathf.Rad2Deg; desiredTurnSpeed = Mathf.Clamp(targetAngle, -1, 1); } else { SelectTarget(); } } }
// Use this for initialization void Start() { SelectTarget(target); behaviour = (BehaviourStates)Random.Range(0, 2); }
public void ChangeBehaviour(BehaviourStates inBehaviour) { behaviour = inBehaviour; }
void GoNeutral() { BehaviourState = BehaviourStates.Neutral; if (ActionState != ActionStates.Standing) ActionState = ActionStates.Standing; }
void GoAggressive() { BehaviourState = BehaviourStates.Aggressive; }
void RunState(BehaviourStates state) { switch (state) { case BehaviourStates.e_Idle: { if (m_Player != null && MinDist2Player <= Vector3.Distance(m_Player.transform.position + ((transform.position - m_Player.transform.position).normalized * MinDist2Player), transform.position)) { Vector3 newPos = transform.position; newPos += (m_Player.transform.position - transform.position).normalized * Time.deltaTime * MovementSpeed; newPos.y = transform.position.y; newPos.z = m_Player.transform.position.z + m_Distance2Player; m_Distance2Player -= Time.deltaTime * MovementSpeed; transform.position = newPos; } else { ChangeState(); m_GameEventManager.ReceiveEvent(GameEvent.e_EngagedBoss, null, 0); m_Spawner.SetActive(false); } break; } case BehaviourStates.e_Attack: { if (m_DelayBetweenShotsTimer <= 0) { ShootTurrets(); m_DelayBetweenShotsTimer = m_DelayBetweenShots; } else { m_DelayBetweenShotsTimer -= Time.deltaTime; } if (m_CurrentShotsFired >= m_ShotsPerBurst) { ChangeState(); } break; } case BehaviourStates.e_SpecialOne: { RaycastHit[] hit; hit = Physics.SphereCastAll(transform.position, 5 /* Temp number */, -transform.up, 10); foreach (RaycastHit obstacle in hit) { if (obstacle.collider.tag == "Movable") { //Tell the object to stop moving m_Debris.Add(obstacle.collider.gameObject); } } foreach (GameObject debris in m_Debris) { float distance2Boss = (transform.position - debris.transform.position).magnitude; if (m_Player != null && distance2Boss <= m_MinDistance2Boss) { //Throw objects at player when they reach the max height Rigidbody debrisPhysics = debris.GetComponent <Rigidbody>(); debrisPhysics.useGravity = true; Vector3 force = (m_Player.transform.position - debris.transform.position).normalized * m_ThrowingForce; debrisPhysics.AddForce(force, ForceMode.Impulse); } else { //Lift objects in m_Debris debris.transform.position += m_LiftSpeed; } m_Debris.Remove(debris); if (m_Debris.Count <= 0) { break; } } break; } default: break; } }