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 bunnynsnake · Jun 23, 2018 at 01:47 AM · c#ontriggerenterienumeratorgetset

how to set a value in one script and call it in another? (c#)

here is the issue, i want to have 3 things happen, thus 3 scripts (if it can be done with fewer, that would be great). and it is not working like it should.

  1. have the player trigger the Trap

  2. have the trap be triggered by the TrapTrigger and start to move (an object)

  3. have the player restart the level if they collide with the Trap

Tthe issue is, i cannot get it to work, the TrapTrigger does not activate the Trap to move. the Trap just starts on its own. I know this is because of the start function, but i can't use an update function with an IEnumerator . I was trying to do an if statement within Start to check if the Traphas been set active, but that doesn't seem to be working. here are the 3 scripts.

  • TRAP:

         using UnityEngine;
         using System.Collections;
         
         public class Trap : MonoBehaviour
         {
             public Vector3 point2;
             public Trap trap;
         
         IEnumerator Start()
             {
               if (trap == enabled)
               {
                  Vector3 point1 = transform.position;
                   while (true)
                   {
                      yield return StartCoroutine(MoveObject(transform, point1, point2, 2.0f));
                      yield return StartCoroutine(MoveObject(transform, point2, point1, 2.0f));
                   }
               }
             }
         
             IEnumerator MoveObject(Transform thisTransform, Vector3 startPos, Vector3 endPos, float time)
             {
                 float i = 0.0f;
                 float rate = 1.0f / time;
                 while (i < 1.0f)
                 {
                     i += Time.deltaTime * rate;
                     thisTransform.position = Vector3.Lerp(startPos, endPos, i);
                     yield return null;
                 }
             }
         }
     
    
       
    
  • TRAP TRIGGER:

             using UnityEngine;
             using System.Collections;
             using System.Collections.Generic;
             
             public class TrapTrigger : MonoBehaviour
             {
                 public Trap trap { set; get; }
             
                 void OnTriggerEnter(Collider other)
                 {
                     if (other.tag == "Player")
                     {
                         trap.enabled = true;
                     }
                 }
             }
    
    
    
  • RESTART:

         using UnityEngine;
         using System.Collections;
         using UnityEngine.SceneManagement;
         
         public class ColRestart : MonoBehaviour
         {
             void OnTriggerEnter(Collider other)
             {
                 if (other.tag == "Player")
                 {
                     SceneManager.LoadScene("Level_03");
                 }
             }
         }
     
    
    
    

all i want is the player to collide with the TrapTrigger - the TrapTrigger to start the Trap movement - and if they player enters the Trap, it triggers the restart script ColRestart.

any help is welcomed. thank you.

P.S. i did post this question before and though it was working, but after some testing it did not work as intended.

Please let me know if you need any more info.

  • NOTES

  • I was thinking to try having the TrapTrigger on the Trap object, but that would defeat the purpose, as the game would just simply restart because of the restart script.

  • Think of it like an dart trap in a puzzle game, like tomb raider, where you step on a tile, and then darts just shoot back and forth, and if the player gets hit they take damage. in this case if they get hit by the object the game restarts.

  • This is the error that comes up when I enter the TrapTrigger object collider. NullReferenceException: Object reference not set to an instance of an object TrapTrigger.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Scripts/TrapTrigger.cs:14)

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
1
Best Answer

Answer by Trevdevs · Jun 23, 2018 at 02:14 AM

I'm actually suprised that you used and Ienum with the Start function I didn't even know that was possible but what I would do is simplify it to 1 script yep 1 that's it.

Somethings to keep track of are A. Make sure your script is on a object with a collider set as isTrigger or it won't be called. B. Why I hate using tags I always forget to set them on the object in the inspector so make sure your player is set with a player tag. Finally make sure your player has a rigidbody as well or the trigger wont run.

C. this is just me being a whiney programmer you don't gotta do this it would just be less lines of code. Don't program an animation create an animation and play it in code (MoveObject)

Here is a good starter for you

 using UnityEngine;
 using System.Collections;
 using UnityEngine.SceneManagement;
 
 [RequireComponent(typeof(BoxCollider))]
 public class Trap : MonoBehaviour 
 {
     public Vector3 point2;
     
     public bool isTrapEnabled;
     public bool shouldResetPlayer;
 
     void OnTriggerEnter(Collider other)
     {
         if(other.tag == "Player")
         {
             if(shouldResetPlayer)
             {
                 SceneManager.LoadScene(SceneManager.GetActiveScene().name);
             }
             else
             {
                 StartCoroutine(PingPong());
             }
         }
     }
 
     IEnumerator PingPong()
     {
         //Move object back and forth
         yield return null; //waits till next frame
     }
 }
 

Comment
Add comment · Show 6 · 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
avatar image bunnynsnake · Jun 23, 2018 at 02:49 AM 0
Share

First, thank you! Second: im confused, how does the object move back and forth ? you want me to use an animation? also, how is the animation starting? i want it to start when the player "steps on" a trap trigger. in the code you have here isn't it stating that if the player does not walk into it the trap to run the back and forth motion? which makes sense, because i don't want it to continue moving after the player has collided with it, but how does the trap start to move? I get that I can put the restart script and the trap script together like this.

 using UnityEngine;
 using System.Collections;
 using UnityEngine.Scene$$anonymous$$anagement;
 
 
 public class Trap : $$anonymous$$onoBehaviour
 {
     public Vector3 point2;
     public Trap trap;
 
 IEnumerator Start()
     {
       if (trap == enabled)
       {
          Vector3 point1 = transform.position;
           while (true)
           {
              yield return StartCoroutine($$anonymous$$oveObject(transform, point1, point2, 2.0f));
              yield return StartCoroutine($$anonymous$$oveObject(transform, point2, point1, 2.0f));
           }
       }
     }
 
     IEnumerator $$anonymous$$oveObject(Transform thisTransform, Vector3 startPos, Vector3 endPos, float time)
     {
         float i = 0.0f;
         float rate = 1.0f / time;
         while (i < 1.0f)
         {
             i += Time.deltaTime * rate;
             thisTransform.position = Vector3.Lerp(startPos, endPos, i);
             yield return null;
         }
     }
     void OnTriggerEnter(Collider other)
     {
         if (other.tag == "Player")
         {
             Scene$$anonymous$$anager.LoadScene(Scene$$anonymous$$anager.GetActiveScene().name);
         }
     }
 }
 

But, how can I have a trap, that is supposed to be a completely different object, far away from the moving trap, be in the same script without it being also a restart function, as the restart is connected to the collider of the object as a whole, correct? please advise. thank you

avatar image Trevdevs bunnynsnake · Jun 23, 2018 at 03:08 AM 0
Share

how to move an object back and forth would be a simple google search, I was just to lazy to code it lol https://forum.unity.com/threads/moving-an-object-back-and-forth-on-a-single-axis-automatically.235033/

Since i don't know what your trap is or how it moves but for instance lets just say you make an animation 2 keyframes one at its starting point and another 5 units to the right. Ins$$anonymous$$d of starting the coroutine and doing complex math you can just play the animation.

$$anonymous$$y code here will run when the player enters the trigger and depending on what "type" of trap it will either start moving or it will reset the player hence the boolean.

avatar image bunnynsnake Trevdevs · Jun 23, 2018 at 03:20 AM 0
Share

ok, i think i get what you mean. I just though not using a animation would be easier, but i can see that it actually may be more difficult not to use it. that link you provided is what i used for my script. so if i was going to an animation, i would just ignore all that, and just tell the animation to innisheate when the player enters a collider?

Show more comments

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

514 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 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 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 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 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 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 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

Problem About Get and Set Methods 0 Answers

c# setter/getters 1 Answer

Instantiation Wont Stop 1 Answer

Public variable hidden in the inspector 2 Answers

When to use SETters and GETters 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