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 /
avatar image
0
Question by awplays49 · May 05, 2015 at 10:06 PM · movementmovement scriptcharacter controller

Character won't jump under certain circumstances

There are 2 situations in which the character won't jump. 1 is when 2 of the WASD keys are pressed. The other is when walking downhill.

My code:

 using UnityEngine;
 using System.Collections;
 
 public class PlayerController : MonoBehaviour {
     
     public float speed;
     private float mouseX;
     private float mouseY;
     public float xSensitiv;
     public float ySensitiv;
     public float jumpForce;
     private float yVelocity;
     private Vector3 [] jumpDirection = new Vector3 [4];
     
     void FixedUpdate () {
         if (Input.GetKey (KeyCode.W))
         {
             GetComponent <CharacterController> ().Move (transform.forward * speed * Time.deltaTime);
         }
         if (Input.GetKey (KeyCode.A))
         {
             GetComponent <CharacterController> ().Move (-transform.right * speed * Time.deltaTime);
         }
         if (Input.GetKey (KeyCode.S))
         {
             GetComponent <CharacterController> ().Move (-transform.forward * speed * Time.deltaTime);
         }
         if (Input.GetKey (KeyCode.D))
         {
             GetComponent <CharacterController> ().Move (transform.right * speed * Time.deltaTime);
         }
         mouseX += Input.GetAxis ("Mouse X") * xSensitiv * Time.deltaTime;
         transform.rotation = Quaternion.Euler (0, mouseX, 0);
         mouseY -= Input.GetAxis ("Mouse Y") * ySensitiv * Time.deltaTime;
         mouseY = Mathf.Clamp (mouseY, -90, 90);
         Camera.main.transform.localRotation = Quaternion.Euler (mouseY, 0, 0);
         if (GetComponent <CharacterController> ().isGrounded == true)
         {
             if (Input.GetKey (KeyCode.Space))
             {
                 yVelocity = jumpForce;
             }
         }
         else
         {
             yVelocity += Physics.gravity.y * Time.deltaTime;
         }
         GetComponent <CharacterController> ().Move (Vector3.up * yVelocity);
     }
 }
Comment
Add comment · Show 5
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 awplays49 · May 05, 2015 at 11:58 PM 0
Share

@InvincibleCat I thought I'd update you on my progress. I have a working jump and moving. These are now my only problems :)

avatar image awplays49 · May 07, 2015 at 12:03 AM 0
Share

I havent gotten assistance yet. Can someone assist me?

avatar image equus_ligneus · May 10, 2015 at 12:13 AM 0
Share

Related: Try to move the CharController down by a small amount before checking IsGrounded. Something like this:

 // move 0.1f down
 transform.position -= Vector3.up * 0.1f;
 
 if(GetComponent<CharacterController>().IsGrounded && Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Space))
 {
     yVelocity = jumpForce;
 }
 else
 {
     yVelocity += Physics.gravity.y * Time.deltaTime;
 }
 // add 0.1f to y-$$anonymous$$ovement
 GetComponent<CharacterController>().$$anonymous$$ove(Vector3.up * (yVelocity + 0.1f));

Unrelated I: You could do your if(...Get$$anonymous$$ey(...)) in 1-2 lines:

 Vector3 movement = Input.GetAxis("Horizontal") * transform.right + Input.GetAxis("Vertical") * transform.forward;
 GetComponent<CharacterController>().$$anonymous$$ove(movement * speed * Time.deltaTime);

Unrelated II: You should store a Reference to your CharacterController. Calling GetComponent often is not the best choice performance-wise (It queries the GameObject's Components until it finds a suitable Component, can be quite slow depending on number of Components and their order). Either get a Reference to your CharacterController (as a local variable) once per FixedUpdate or create a member of type CharacterController in your class and get a reference in Start() (or at the first possible time when you can be sure your CharacterController has been created)

avatar image awplays49 · May 10, 2015 at 12:19 AM 0
Share

And what about the not being able to move if 2 wasd keys are pressed? By the way good answer, thanks for finding this

avatar image equus_ligneus · May 10, 2015 at 12:24 AM 0
Share

Unrelated I should fix that :)

0 Replies

· Add your reply
  • Sort: 

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

20 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

Related Questions

Unusual normalized vector effects on movement 1 Answer

Help with implementing continuous collision detection 0 Answers

Strange Character Controller Behavior Caused by Simulated Gravity and Ground Check 0 Answers

How Time.deltaTime affects movement ? 4 Answers

2D Character suddenly stops moving for no given reason 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