예제 #1
0
    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);
        }
    }
예제 #2
0
 private void RespondToHaunt(HauntEvent e)
 {
     if (!e.succeeded)
     {
         return;
     }
     if (e.IsStart)
     {
         StartCoroutine(IdleForTime(Random.Range(2f, 4f)));
     }
     else
     {
     }
 }
예제 #3
0
 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));
     }
 }
예제 #4
0
    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();
    }
예제 #5
0
 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
     }
 }
예제 #6
0
 public void Respond(HauntEvent he)
 {
     onRespond?.Invoke(he);
 }