Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 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 VisLock · Aug 11, 2015 at 07:20 PM · movement

Moving my character horizontally and vertically at diffrent times

Im trying to make a movement code that when you move horizontally you can't go vertically with my vertically code and vice-versa. can someone help me please

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 Bluk · Aug 11, 2015 at 07:58 PM

Assuming your character has a rigidbody, you can do something like:

 void FixedUpdate ()
     {
         
         float moveHorizontal = Input.GetAxis ("Horizontal");
         
         
         float moveVertical = Input.GetAxis ("Vertical");
         
             //We are not currently moving on the x axis
         if (rb.velocity.x != 0) {
             moveVertical = 0;
         }
         //We are not currently moving on the y axis
         else if (rb.velocity.y != 0) {
             moveHorizontal = 0;
         }
         Vector3 Movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
         rb.AddForce(Movement);
     }

Or if you move in some other way just set movingX and movingY booleans so that only the part of code on the correct axis is executed

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 VisLock · Aug 11, 2015 at 08:05 PM 0
Share

im not the best in unity but why do you have the ! between the x and the 0

avatar image VisLock · Aug 11, 2015 at 08:11 PM 0
Share

it didn't work and I have a rigid body. can you check my script. it updated the api

using UnityEngine; using System.Collections;

public class PlayerControl : $$anonymous$$onoBehaviour {

 public float speed;

 private Rigidbody rb;




 void Start () {
     rb = GetComponent<Rigidbody>();
 }
 



 void FixedUpdate ()
 {

         float moveHorizontal = Input.GetAxis ("Horizontal");

     
         float moveVertical = Input.GetAxis ("Vertical");
     

     Vector3 $$anonymous$$ovement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
     
     rb.AddForce($$anonymous$$ovement * speed);
 

     if (GetComponent<Rigidbody>().velocity.x != 0) {
         GetComponent<Rigidbody>().velocity.y = 0;
     }
     
     else if (GetComponent<Rigidbody>().velocity.y != 0) {
         GetComponent<Rigidbody>().velocity.x = 0;
     }
             
 
 }

}

avatar image Bluk · Aug 11, 2015 at 08:32 PM 0
Share
  1. != means "different from"

  2. If you initialize rb to be GetComponent(); in start (a good thing) use it in Update() !

  3. I edit my answer with the new version. It works for me.

avatar image Runalotski · Aug 11, 2015 at 10:59 PM 0
Share

you could use

 if(Input.GetAxis("Horizontal") != 0)
 {
     //write Left Right Code
 }
 else if(Input.GetAxis("Vertical") != 0)
 {
     //write updown Code
 }

this works because it will only run the first block to be true.

so the Vertical and Horizotnal will never work at the same time

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

Making a bubble level (not a game but work tool) 1 Answer

Mathf.PingPong not working properly, object supposed to move left to right but instead spawns at a completely different location and z and y axis keep on randomising. 0 Answers

Moving a rigidbody towards the mouse position 1 Answer

Rotation used as movement 4 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