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 /
  • Help Room /
avatar image
0
Question by HandlebarOrionX · Mar 15, 2020 at 02:56 AM · c#cameramovementplayer

How do I make my player's movement relative to Main Camera's direction?

So I'm using a rather splendid tool in Unity I bought called Spriteman 3D. It's got an excellent player controller, except there's one issue.

The player movement isn't relative to camera.

And if I tick the "Use Camera Movement" box which should make the movement relative to camera direction, my player locks into place and only walks down.

This is the code using UnityEngine;

 namespace SpriteMan3D
 {
     /// <summary>
     /// A simple Input controller for detecting player actions.
     /// </summary>
     [RequireComponent(typeof(Rigidbody))]
     [RequireComponent(typeof(Collider))]
     public class PersonPlayerController : PersonController
     {
         /// <summary>
         /// A character's walking speed.
         /// </summary>
         public float walkSpeed = 2f;
         /// <summary>
         /// A character's running speed.
         /// </summary>
         public float runSpeed = 3f;
         /// <summary>
         /// A character's jump velocity.
         /// </summary>
         /// <remarks>
         /// Increase your project's Physics gravity and increase this value to make a character jump quickly.
         /// </remarks>
         public float jumpVelocity;
 
         /// <summary>
         /// How far to look for the distance to ground.
         /// </summary>
         public float groundDistanceOffset = 0.2f;
 
         /// <summary>
         /// The collider used for a mellee attack.
         /// </summary>
         public Collider attackCollider;
 
         /// <summary>
         /// Determines if this character can move.
         /// </summary>
         public bool canMove = true;
         /// <summary>
         /// Determines if this character can jump.
         /// </summary>
         public bool canJump = true;
         /// <summary>
         /// Determines if this character can attack.
         /// </summary>
         public bool canAttack = true;
 
         private Rigidbody rb;
         private float distToGround;
         private Collider charCollider;
 
         public float attackCooldown = 0.2f;
         private float attackTimer = 0f;
         
         void Start()
         {
             rb = transform.GetComponent<Rigidbody>();
 
             // get the distance to ground
             charCollider = GetComponent<Collider>();
             distToGround = charCollider.bounds.extents.y;
         }
 
         Vector3 offset;
 
         void Update()
         {
             IsGrounded = Physics.Raycast(transform.position, -Vector3.up, distToGround + groundDistanceOffset);
 
             HandleAttack();
             HandleJump();
         }
 
         void FixedUpdate()
         {
             HandleMove();
         }
 
         public bool useCameraMovement = true;
 
         void HandleMove()
         {
             if (canMove)
             {
                 var speed = walkSpeed;
 
                 // detect input movement
                 var moveHorizontal = Input.GetAxis("Horizontal");
                 var moveVertical = Input.GetAxis("Vertical");
                 IsMoving = moveHorizontal != 0 || moveVertical != 0;
 
                 IsRunning = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift);
                 if (IsRunning)
                 {
                     speed = runSpeed;
                 }
 
                 // rotate the character
                 var movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
                 
                 // forward is always direction of camera forward along x/z plane
                 if (useCameraMovement)
                 {
                     var camForward = Camera.main.transform.forward;
                     var camDir = new Vector3(camForward.x, 0.0f, camForward.z);
 
                     var angle = Mathf.Sign(camDir.x) * Vector3.Angle(camDir.normalized, Vector3.forward);
                     var quat = Quaternion.Euler(0f, angle, 0f) * movement;
 
                     movement = quat;
                 }
 
                 // rotate the character
                 var rot = movement * (speed / 10);
 
                 if (attackTimer <= 0 && movement != Vector3.zero)
                 {
                     var newRotation = Quaternion.LookRotation(rot);
                     rb.rotation = Quaternion.RotateTowards(transform.rotation, newRotation, 360f);
                 }
 
                 // move the character
                 if (IsMoving && offset.y != 0f)
                 {
                     movement.y = offset.normalized.y * movement.magnitude;
                 }
                 movement *= (speed / 10f);
 
                 var characterMovement = transform.position + movement;
                 if (attackTimer <= 0 || !IsGrounded)
                 {
                     rb.MovePosition(characterMovement);
                 }
             }
         }
 
         private void HandleJump()
         {
             if (canJump)
             {
                 // detect jump
                 JumpStarted = Input.GetButtonDown("Jump");
 
                 // make the character jump
                 if (JumpStarted && IsGrounded)
                 {
                     var velocity = rb.velocity;
                     velocity.y = jumpVelocity;
                     rb.velocity = velocity;
                 }
             }
         }
 
         private void HandleAttack()
         {
             if (canAttack)
             {
                 if (attackTimer <= 0)
                 {
                     // detect attack
                     AttackStarted = Input.GetButtonDown("Fire1");
                     if (AttackStarted)
                     {
                         attackTimer = attackCooldown;
                     }
                 }
                 else
                 {
                     if(AttackStarted)
                     {
                         AttackStarted = false;
                     }
                     attackTimer -= Time.deltaTime;
                 }
             }
         }
 
         /// <summary>
         /// called as animation event from Attack animation.
         /// </summary>
         public void StartAttack()
         {
             attackCollider.enabled = true;
         }
 
         /// <summary>
         /// called as animation event from Attack animation.
         /// </summary>
         public void EndAttack()
         {
             attackCollider.enabled = false;
         }
     }
 }

The majority of this code does work, except for the "use camera movement" thing. And if I don't tick it, the character does move freely but not relative to the main camera's direction

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

Answer by Xpartano · Mar 19, 2020 at 01:39 PM

There is a nice tutorial about this:

https://www.youtube.com/watch?v=ORD7gsuLivE

I hope it helps you :)

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

809 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Trying to connect camera movement with player AND mouse 0 Answers

Issue with getting the mouse position in 3D and moving a gameobject on the y & z axis 0 Answers

Making the player the camera's axis of rotation. 0 Answers

How to specify forward direction for my character? 0 Answers

Player Movement Not Always Responding 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