Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
  • Help Room /
avatar image
0
Question by imbruceter · Dec 06, 2021 at 08:47 PM · unity 5collisiongameobjectinputfall

Disable input while falling?

I have a game where you get points by each input (mouse left click) you made to stay on a platform. I want to prevent the player from spamming the input when he is already not colliding with the platform.

The platform do fall and regenerate as the player gets forward. Here's how it is:

 private void OnCollisionExit(Collision collision)
     {
         if (collision.gameObject.tag == "Player")
         {
             Invoke("Fall", 0.2f);
         }
     }
 
     void Fall()
     {
         GetComponent<Rigidbody>().isKinematic = false;
         Destroy(gameObject, 1f);
     }

So my plan is to do the same exact thing (OnCollisionExit) but for the "Platform" tag. The issue is that I have no clue how to disable the input completely. Can anyone help me with that? Thank you a lot! :)

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

2 Replies

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

Answer by Pathojen · Dec 06, 2021 at 11:31 PM

I would set up a boolean and check if boolean is true to perform the action after a mouse press.

On Player

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ShootOnClick : MonoBehaviour
 {
     public static bool onGround;
 
     private void OnCollisionStay(Collision collision)
     {
         if (collision.gameObject.CompareTag("Platform"))
         {
             onGround = true;
         }
     }
 
     private void OnCollisionExit(Collision collision)
     {
         if (collision.gameObject.CompareTag("Platform"))
         {
             onGround = false;
         }
     }
 }

On Target

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using static ShootOnClick;
 
 public class ShotOnClick : MonoBehaviour
 {
 
     private void OnMouseDown()
     {
         if (ShootOnClick.onGround == true)
         {
             Destroy(this.gameObject);
         }
     }
 
 }

In case you or another person reading this doesn't notice, not that the target script says using static ShootOnClick. Without this line in the second script, or setting the bool onGround to public static in the first one, this would not have worked. Now, for movement, you could put transform.Translate in an if statement to check if onGround is true.

Comment
Add comment · Show 2 · 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 imbruceter · Dec 07, 2021 at 12:19 AM 0
Share

I get what you've done and I also had an idea to set up a boolean but I also need to completely disable the input. I implemented this code but the player is still able to get some points by clicking in mid air. Do you know how to do that? These are all the player movement related codes:

 void Move()
     {
         currentSpeed = Mathf.SmoothStep($$anonymous$$Speed, maxSpeed, time / accelerationTime);
         transform.position += transform.forward * currentSpeed * Time.deltaTime;
         time += Time.deltaTime;
     }
 
     void CheckInput()
     {
         //if first input then ignore
         if (firstInput)
         {
             firstInput = false;
             return;
         }
 
         if (Input.GetMouseButtonDown(0))
         {
             ChangeDirection();
         }
     }
 
     void ChangeDirection()
     {
         if (movingLeft)
         {
             movingLeft = false;
             transform.rotation = Quaternion.Euler(0, 90, 0);
         }
         else
         {
             movingLeft = true;
             transform.rotation = Quaternion.Euler(0, 0, 0);
         }
     }

I am sorry if I am a bit disturbing but I tried a bunch of things and nothing seemed to work :(

avatar image Pathojen imbruceter · Dec 07, 2021 at 02:58 AM 0
Share

Try this. I just edited the code. It might work a little better.

avatar image
0

Answer by imbruceter · Dec 07, 2021 at 05:07 AM

Yes, you made it! Sorry for being stupid, this movement blocking was new to me. I also blocked the player from increasing the score while mid air. Thank you a lot for your time and help!

Comment
Add comment · Show 4 · 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 Pathojen · Dec 07, 2021 at 05:21 AM 1
Share

Glad it worked! And believe me when I say that learning something new and screwing up is never stupid, it's just part of the process. Happy coding.

avatar image imbruceter Pathojen · Dec 07, 2021 at 06:39 AM 0
Share

Oh, no! I hope you still here. Sorry for disturbing you again, but there is a new bug, which is caused by this code. Some platforms disappear right after or under me, before or meanwhile they are falling. Sometimes platforms even disappear before me (wasn't letting me insert the pic so I upoaded it:

https://pasteboard.co/sWO9YcuN5ij6.png

Why is that? What to do with that? I tried to delay the fall and the destroying but doesn't seem to work. Also set the Rigidbody.isKinematic to false in ShotOnClick, but still no improvement.

avatar image Pathojen imbruceter · Dec 07, 2021 at 06:43 AM 1
Share

I'm here! And I'm guessing it's because you're destroying anything on click, rather than anything that is not tagged platform. Try placing the destroy function in an if statement.

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

371 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

Related Questions

Remove Object from Game after Collision with Player (Unity 5.2.3f1) 1 Answer

Unity physics Help Implementing Real Life Physics in Jumping System C# 2 Answers

How can i get a object fall and go up random? 0 Answers

How to find if there is any Gameobject between two Gameobjects (no Gameobject at vectors in the straight line joining)? 0 Answers

Child gameobject moving position after collision 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