private void HandleHaunt(Haunter haunter) { if (nearestItem == null) { return; } nearestItem.HandleHaunt(); var hauntPosition = translator.TranslatePosition(nearestItem.root.position); var hauntNeighboors = translator.GetConnectedPositions(hauntPosition); var hauntEvent = new HauntEvent() { hauntType = nearestItem.hauntType, position = nearestItem.root.position, fear = nearestItem.fear }; foreach (var responder in responders) { var responderPosition = translator.TranslatePosition(responder.root.position); var isInSameRoom = hauntPosition == responderPosition; if (!hauntNeighboors.Contains(responderPosition) && !isInSameRoom) { continue; } responder.Respond(hauntEvent); } }
private void RespondToHaunt(HauntEvent e) { if (!e.succeeded) { return; } if (e.IsStart) { StartCoroutine(IdleForTime(Random.Range(2f, 4f))); } else { } }
private void RespondToHaunt(HauntEvent e) { if (!e.succeeded) { return; } if (e.IsStart) { StartCoroutine(GetScaredByHaunt(e.room == _currRoomFinder.Room)); } else { StartCoroutine(RecoverFromHaunt(e.room == _currRoomFinder.Room)); } }
private void HandleHaunt(HauntEvent hauntEvent) { if (isPaniced) { return; } var reaction = reactionMap[hauntEvent.hauntType]; traverseDestination = fearActor.HandleFear(hauntEvent.fear, reaction.reaction, hauntEvent.position); if (traverseDestination == transform.position) { return; } ResumeTraversal(); }
private void PlayHauntSound(HauntEvent e) { if (e.succeeded) { if (e.IsStart) { _audioSource.pitch = _audioSource.clip.length / e.duration; _audioSource.Play(); } else { _audioSource.Stop(); } } else { //TODO: Played failed haunt sound } }
public void Respond(HauntEvent he) { onRespond?.Invoke(he); }