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 Whirlwave · May 20, 2017 at 08:49 AM · camerainputcamera-movementjoystickplayer movement

How to move the player object in the same direction as the input axis, considering the cameras direction?

First and foremost, here is the code I am using:

 using UnityEngine;
 
 public class ThirdPersonController : MonoBehaviour {
 
     CharacterController player;
     public Camera playerCamera;
     public Transform auxCamera;
     public Transform directionCube; 
 
     public float speed = 6f; 
 
     Vector3 movement;
     Vector3 cameraMovement; 
 
     float horMoveAxis;
     float verMoveAxis;
 
     float horCameraAxis;
     float verCameraAxis;
 
     float leftTriggerAxis;
     float rightTriggerAxis;
 
     public float horSensitivity = 2f;
     public float verSensitivity = 2f;
     public float cameraRotationSpeed = 20;
     public float viewRange = 70; 
 
 
     // Use this for initialization
     void Start () {
 
         player = gameObject.GetComponent<CharacterController>(); 
         
     }
 
    
     
     // Update is called once per frame
     void Update () {
 
         //Seting up axis
 
         //Movement Axis 
 
         horMoveAxis = Input.GetAxis("PS4_LeftStickX");
         verMoveAxis = Input.GetAxis("PS4_LeftStickY");
 
         //Camera Axis
 
         horCameraAxis += Input.GetAxis("PS4_RightStickX");
         verCameraAxis += Input.GetAxis("PS4_RightStickY");
         verCameraAxis = Mathf.Clamp(verCameraAxis, -viewRange, viewRange); 
 
         //Trigger Axis
 
         leftTriggerAxis = Input.GetAxis("PS4_L2");
         rightTriggerAxis = Input.GetAxis("PS4_R2");
 
         //Setting up a new reset point for the triggers. 
 
         leftTriggerAxis = (leftTriggerAxis < 0) ? 1-leftTriggerAxis * -1 : leftTriggerAxis + 1;
         rightTriggerAxis = (rightTriggerAxis < 0) ? 1-rightTriggerAxis * -1 : rightTriggerAxis + 1;
 
         print("leftTriggerAxis = " + leftTriggerAxis + " ,rightTriggerAxis = " + rightTriggerAxis);
 
 
         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //Movement
 
         movement.x = horMoveAxis * speed;
         movement.z = verMoveAxis * speed;
 
 
         directionCube.localPosition =Vector3.Lerp(directionCube.localPosition, new Vector3(horMoveAxis, 0, verMoveAxis),0.1f);
         
 
         player.Move(movement * Time.deltaTime);
 
         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //Camera
 
         auxCamera.localEulerAngles = new Vector3(verCameraAxis,horCameraAxis,0); 
 
         
     }
 }

I am trying to make a 3rd person controller with CharacterController.move(), using joystick input. Movement works fine, and I can sucessfully move my character in 3D space. However, I'm having a hard time figuring out how to move the character in the same direction as the one aplied on the input axis, considering the direction of the camera. I know that is kind of incomprehensible, given my broken english and lack of a better explanation of what Im trying to do, but lets think of an example so you guys can understand what I'm on about:

Imagine the character is stopped, and you rotate the camera around it, so that the characters face is facing the camera. I want to make it so when I press forward on the stick (the direction the camera is facing) the character turns around and starts moving in that direction.

I created an empty object, called "auxCamera", to store the rotation input from the right stick, and as such allow the child Camera object atached to it to rotate around the player.

I also created a cube "directionCube" so I can visualize the input in 3D space.

Keep in mind that I am using characterController.move() and as such changing the position with transform.position += auxCamera.forward is not a viable option.

I have also tried movement = auxCamera.rotation * movement; but that always moves the character in the direction of the camera, which is not what I want here, among other issues.

I hope I made myself clear enough so you guys can help me out. I have sucessfully built a pretty robust FPS controller using these fundamentals, but I'm having a hard time with this one.

Any help, including any way to improve my current code, would be highly apreciated. Thank you!

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

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Player Movement / Camera Tracking Issue 0 Answers

Camera problem 2 Answers

Moving Player Relative to Camera? 1 Answer

Rotation of player based on camera direction and joystick direction in 3D world 1 Answer

Problem in rotating camera around a moving player 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