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 GroveArts · Jul 03, 2016 at 07:52 PM · if-statementsif statementif-elseif else

Disabling function of a key

So I need I'm trying to get a gameObject to jump, which I succeeded in, but its 50% of the way there to completion. I can get it to jump once and not get it to go up when I hold "Space", but if I spam tap space it'll keep going up. I think I either have a coding error somewhere, or I am just missing a piece of code somewhere. Could I please get someone to point out my error? Thanks! Here's my code: using UnityEngine; using UnityEngine.UI; using System.Collections;

 public class PlayerController : MonoBehaviour
 {
     public GameObject Player;
     public float speed;
     public Text countText;
     public Text winText;
     public float jumpHeight = 200f;
     public float bounceHeight = 200f;
 
     private Rigidbody rb;
     private int count;
 
     void Start()
     {
         rb = GetComponent<Rigidbody>();
         count = 0;
         SetCountText();
         winText.text = "";
     }
 
     void Update()
     {
         RaycastHit hit;
         Ray bouncingRay = new Ray(transform.position, Vector3.down);
 
         if (Physics.Raycast(bouncingRay, out hit, bounceHeight))
         {
             if (hit.collider.tag == "Ground" && Input.GetKeyDown("space"))
                 {
                     rb.AddForce(Vector3.up * jumpHeight);
                 }
             else
                 {
                 //need to disable key here
                 }
         }
     }
 
     void FixedUpdate()
     {
         float moveHorizontal = Input.GetAxis("Horizontal");
         float moveVertical = Input.GetAxis("Vertical");
 
         Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
 
         rb.AddForce(movement * speed);
 
     }
 
     void OnTriggerEnter(Collider other)
     {
         if (other.gameObject.CompareTag("Pick Up"))
         {
             other.gameObject.SetActive(false);
             count = count + 1;
             SetCountText();
         }
     }
 
     void SetCountText()
     {
         countText.text = "Count: " + count.ToString();
         if (count >= 8)
         {
             winText.text = "You Win!";
         }
     }
 }
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

Answer by RyanDiCenzo · Jul 04, 2016 at 07:42 AM

@GroveArts Your problem is you are casting the ray down 200 units. You don't want it to go that far down because even if the player is up in the air it will still allow it to jump as the ray goes farther down. Change your bounceHeight variable to something like 1 or 0.5.

If you set your variable to something like 0 or 0.5, depending on the size of your character you might not be able to jump at all. So remember that your ray is being cast from the center of your player. So if you have a 1 unity high block as your character and you cast a ray 0.1 units down from the center of your character (0.5 units off the ground) it will never touch the ground. So find a value that works well for your character.

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

MouseLook half disabling 1 Answer

Double subtraction issue 1 Answer

Can I Put a IF In a IF?!? 2 Answers

If statement seeming to give false positive 2 Answers

Multiple Nested If Statements? 1 Answer


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