Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Forc3ofWill · Apr 21, 2018 at 09:28 PM · ontriggerenterdialogue

Two separate OnTriggerEnter() functions playing at the same time.

Hello, I'm using a simple dialogue system for my LD jam game and I have an issue. If I attach the script included below to one character in the scene everything is fine. However, if I attach it to two or more, even when I collide with only one character at a time, the dialogue from the arrays of all characters in the scene will show up on the screen at the same time. I assume it's an issue of scope but after 12-hours of trying to make my first game, I'm not even sure how to phrase this question right. Help would be greatly appreciated.

Here's the script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using TMPro;
 
 public class DialogOne : MonoBehaviour
 {
     public TextMeshProUGUI textDisplay;
     public string[] sentences;
     public float typingSpeed = 0.01f;
     private int index;
 
     public float lineCoolDown = 3;
     public float lineCoolDownTimer;
 
 
     void OnTriggerEnter(Collider col)
     {
         if (col.tag == "Player")
         {
             StartCoroutine(Type());
             Debug.Log("Hit!");
         }
     }
 
     void OnTriggerExit(Collider col)
     {
         if (col.tag == "Player")
         {
             textDisplay.text = "";
         }
     }
 
     private void Update()
     {
 
         if (lineCoolDownTimer > 0)
         {
             lineCoolDownTimer -= Time.deltaTime;
         }
 
         if (lineCoolDownTimer < 0)
         {
             lineCoolDownTimer = 0;
         }
 
         if (Input.GetMouseButtonDown(0) && lineCoolDownTimer == 0) 
         {
             NextSentence();
             lineCoolDownTimer = lineCoolDown;
         }
     }
 
     IEnumerator Type()
     {
         // yield return new WaitForSeconds(2f);
 
         foreach (char letter in sentences[index].ToCharArray())
         {
             textDisplay.text += letter;
             yield return new WaitForSeconds(typingSpeed);
         }
     }
 
     private void NextSentence()
     {
         if (index < sentences.Length - 1)
         {
             index++;
             textDisplay.text = "";
             StartCoroutine(Type());
         }
         else
         {
             textDisplay.text = "";
         }
     }
 
 }
 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Forc3ofWill · Apr 22, 2018 at 06:37 AM

Turns out there's such a thing as OnTriggerStay() method which - contrary to the regular Update() method - actually cares if we're colliding with the object that we're trying to attach some per frame logic to.

Good night sleep is great for debugging.

EDIT: Just to reiterate for posterity (in case you found this thread on google months from now). It wasn't a case of two OnTriggerEnter() methods from different objects running at the same time as the name of the question suggested. It was a case of a dummy putting some logic that was meant to be checked every frame (while "Player" stayed inside a trigger collider) in the Update() method rather than OnTriggerStay() method. Hope that helps!

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

79 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Playing Dialogue on Trigger Enter without overlapping sound 1 Answer

how to hide dialogue system until triggered ?? 1 Answer

How to display a characters "dialogue" when entering a collider? 1 Answer

The problems of Collider .... 1 Answer

OnTriggerEnter(hit : Collider) and (other : Collider) 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges