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 TheCreatorultim · Jul 23, 2018 at 09:17 AM · c#triggertimerlaggy

Make code less laggy? and one object in trigger rather than all?

So, i have this code using System.Collections; using System.Collections.Generic; using UnityEngine;

 public class cannonshoot : MonoBehaviour
 {
 
     public float time;
     //public float damage;
     float timer;
     void Start()
     {
         time++;
         timer = time;
     }
 
     private void OnTriggerStay(Collider other)
     {
         if (timer <= 0.4)
         {
             if (other.gameObject.tag == "enemie")
             {
                 other.gameObject.GetComponent<Health>().Min();
             }
             Debug.Log("Damage");
         }
     }
 
     void Update()
     {
         timer -= Time.deltaTime;
         if (timer < 0)
         {
             timer = time;
         }
         Debug.Log(timer);
     }
 }
 

But, it's EXTREMELY laggy, and gets all objects with tag "enemie" rather than just a few (i didn't know how to make that work)

If you can help me, it's greatly appriciated. :3

Comment
Add comment · Show 3
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 JVene · Jul 23, 2018 at 11:38 AM 0
Share

A few things jump out at me.

1) I need to know what you expect to happen

2) There is a lag built into the fact that OnTriggerStay ignores the tag check until .6 seconds has elapsed

3) There is no real synchronization between that 0.4 (how is that compiling without the f after 4? - what version of Unity and C# are you using?) time test and the timer reset every second, which means, depending on when the OnTriggerStay happens to fire, could mean, potentially, very long delays (in theory could be hours).

Point 3 is possible because there could be a series of sequences where OnTriggerStay skips because timer is > .4, but the Update loop both decrements that to zero and resets it to 1 before another OnTriggerStay happens to fire (I can't see what is triggering the OnTriggerStay, so I'm going only by what I see, which is to say I see nothing to inform how often and when the trigger would fire).

In fact, I can't tell what you intend, so I can't even hint as to what to do - I don't know what direction to point you without an expectation in $$anonymous$$d.

avatar image Sonky108 · Jul 23, 2018 at 12:34 PM 0
Share

First of all I would remove all Debug.Log, especially from physics related methods. Have you tried profiling?

avatar image Stratosome · Jul 23, 2018 at 02:10 PM 0
Share

Yeah, OnTriggerStay is just inefficient and kinda bad to use in general. If you can manage to find a substitute for that (using both OnTriggerEnter and OnTriggerExit generally works for me), that would be one point of improvement, but others have already said stuff about OnTriggerStay.

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by anthot4 · Jul 23, 2018 at 01:40 PM

As @JVene says, you need to explain what you want the code to do better. But I'm guessing that the Cannon is instantiated as soon as it is fired and what you are trying to do is check if the timer has been longer than 0.6 seconds and the cannon collides with an enermie then execute the min function on the health script of the enermie. I think the reason for your problems is that you are using OnTriggerStay which is executed every frame that a trigger collider enters the canon. Try changing it to OnTrigerEnter and that will only be called once when the canon hits the enermie. In future though, you need to explain the problem in more detail as it isn't that clear what you are trying to achieve.

Comment
Add comment · Show 7 · 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 TheCreatorultim · Jul 23, 2018 at 02:15 PM 0
Share

that's not it.. I'll try to explain more

It's a simple static object with a trigger, and a timer, when the timer reaches below 0,4 it'll execute the health script to every single object with the "enemie" tag inside of the trigger.

which, is also not what i want, i'd prefer for it to only execute the health script on one or two enemies in range, rather than all.

Sorry i wasn't clear enough

avatar image anthot4 TheCreatorultim · Jul 23, 2018 at 02:38 PM 0
Share

The code you have put up should only execute the $$anonymous$$in function in the health script during a trigger collision between enermie and Cannonshoot. I suggest you look away from this script and have a look elsewhere for the problem as its not this script thats causing the problem. You can always use breakpoints and get more information about what "Other" contains.

avatar image TheCreatorultim anthot4 · Jul 23, 2018 at 02:49 PM 0
Share

as long as it's in the trigger, it checks if the timer is below 0.4 if it is, is executes, but is very laggy.

Show more comments
avatar image
0

Answer by Liaram · Jul 23, 2018 at 03:39 PM

Try removing Debug.Log(timer); and Debug.Log("Damage"); Writing to log possibly several times each and every frame would be quite laggy. If you need to observe the values you can make the variable public and look at it in the editor.

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

542 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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

Help with making a triggered gui message 1 Answer

Distribute terrain in zones 3 Answers

Multiple Cars not working 1 Answer

Change main Camera to another camera with a Trigger then back with a Timer. 1 Answer

Create custom Triggerevent 0 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