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 oliver-jones · May 21, 2012 at 05:16 PM · positioncharactercontrolworld

TopDown Controls - World Movement

Hello,

I'm working on a top down controller for my character. Right now, it rotates towards where the mouse is on the screen, and when you press 'W', or UP it will move forward in the direction of the mouse. 'S' or DOWN, will move away and so on.

This works fine, but I also want an option so I can change the movement to world directions, what I mean by that, is no matter what rotation the character is at, 'W' or UP will always move Up/North/+Z, and the same with all the other directions. For some reason, I really cant seem to get my head around this?

Below is my script for moving the character in local position, with rotation of the mouse:

 // ----- Move Character ----- \\
     //move in local position
     if(!allowWorldMovement){
         if(allowRotateStatic){
             //rotate player to face direction arrow
             player.transform.rotation = Quaternion.Slerp(player.transform.rotation, targetRotation, playerRotateSpeed * Time.deltaTime);
         }
         if(Input.GetAxis("Vertical")){
             //rotate player to face direction arrow
             player.transform.rotation = Quaternion.Slerp(player.transform.rotation, targetRotation, playerRotateSpeed * Time.deltaTime);
         
             //them move player towards arrow direction
             var translation : float = Input.GetAxis("Vertical") * playerMoveSpeed;
             translation *= Time.deltaTime;
         
             player.transform.Translate(0,0,translation);
         }
         if(Input.GetAxis("Horizontal")){
         
             var panning : float = Input.GetAxis ("Horizontal") * playerPanSpeed;
             panning *= Time.deltaTime;
         
             player.transform.Translate(panning,0,0);
     
             //pan the character left/right whilst looking at mouse position/direction arrow
             if(allowRotatePan){
                 player.transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, playerRotateSpeed * Time.deltaTime);
             }
         }
     }

And then in the world position, I'm not making any progress, my character 'tries' to move, but seems like hes stuck, and then just bounces back to his original position?

 //move in world space
     else{
         
         var translationW : float = Input.GetAxis ("Vertical") * 10;
         translationW *= Time.deltaTime;
         
         //if(Input.GetAxis("Vertical")){
             player.transform.position = Vector3(0, 0, translationW);
         //}
     }
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
0
Best Answer

Answer by ExTheSea · May 22, 2012 at 03:53 PM

It's quite simple. You just use position.x or position.z.

ExampleScript:

 if(Input.GetButton("Test"))
 gameObject.transform.position.x+=2*Time.deltaTime;

This makes the gameobject move along the worlds x-axis and it does not depend on its angle.

It think for example Vector3(2,0,0) also works just fine.

Hope this helps.

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

How to make camera position relative to a specific target. 1 Answer

Touch position off from real position? 1 Answer

How can I find the position of my weapon? 1 Answer

World position of a mouse click with a tilted camera 2 Answers

How to control 2 characters 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