public void NotifyPlayerAttackedPart(Moveable part) { if (part == brain) { cameraManager.AddScreenShake(0.3f); audioManager.PlayClip(audioManager.hurtClip); brainScript.NotifyHurt(); hitsLeft--; if (hitsLeft <= 0) { cameraManager.AddScreenShake(0.8f); pp.SendPulse(brain.GetComponent <Collider2D>().bounds.center, 200f); Vector3 brainToPlayer = player.position - brain.transform.position; player.GetComponent <CharController>().ForceJump(brainToPlayer.normalized); currentLevel++; if (currentLevel < levels.childCount) { StartLevel(currentLevel); } else { ActivateEndState(); } } } }
public void Attack() { bool attacked = false; foreach (ProjectileWeapon weapon in weapons) { attacked |= weapon.Attack(); } if (attacked) { cameraManager.AddScreenShake(0.2f); } }
private void SwitchToState(State state) { State lastState = this.state; this.state = state; stateStartTime = Time.timeSinceLevelLoad; if (state == State.WaitingToStart) { atTarget = true; levelManager.NotifyPartAtTarget(this); } // For actions where both hands would play if (config.part == MoveConfig.Part.LeftHand) { if (state == State.PatrolStart) { audioManager.PlayClip(audioManager.handPatrolShake); } else if (state == State.PatrolMoveTo) { audioManager.PlayClip(audioManager.handPatrolMove); } else if (state == State.PatrolWaitEnd) { audioManager.PlayClip(audioManager.handPatrolArrive); cameraManager.AddScreenShake(0.3f); } } if (state == State.PlayerMoveTo) { // Figure out direction using collider positions startPointPlayerTo = col.bounds.center; Vector3 startToNext = config.GetTarget(targetIndex) + Vector2.up * col.bounds.extents.y - startPointPlayerTo; Vector3 startToPlayer = player.GetComponent <Collider2D>().bounds.center - (Vector3)startPointPlayerTo; playerToDir = Vector3.Cross(startToNext, startToPlayer).z > 0 ? 1 : -1; // For actual movement, we need to use transform positions startPointPlayerTo = transform.position; audioManager.PlayClip(audioManager.handPatrolMove); } else if (state == State.PlayerWait && lastState == State.PlayerMoveTo) { cameraManager.AddScreenShake(0.3f); } if (state == State.MoveToInitialTarget && config.part == MoveConfig.Part.Brain) { audioManager.PlayClip(audioManager.headMove); } if (config.part == MoveConfig.Part.Brain) { Debug.Log("Brain Switching to state " + state); if (state == State.WaitingForNextConfig) { heartParticles.Play(); } else { heartParticles.Stop(); } } }