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 Harbinger-Czar · Jul 06, 2018 at 03:49 AM · c#cameracontrols

Change controls based on camera orientation.,How do I change my controls based on camera orientation.

I'm struggling with this one as well. I'm trying to get the player controls to rotate as the camera does. Any thoughts?

Player Controller:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PlayerController : MonoBehaviour
 {
 
     public float speed;
     bool isMoving;
     float distance;
     Vector3 endPos;
 
     void Start()
     {
         isMoving = false;
         //rb = GetComponent<Rigidbody>();
     }
 
     private void FixedUpdate()
     {
 
         if (Input.GetKey("left") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray leftRay = new Ray(transform.position, Vector3.left);
 
             if (Physics.Raycast(leftRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(hit.collider.transform.position.x + 1, endPos.y, endPos.z);
                 }
             }
         }
 
         if (Input.GetKey("right") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray rightRay = new Ray(transform.position, Vector3.right);
             if (Physics.Raycast(rightRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(hit.collider.transform.position.x - 1, endPos.y, endPos.z);
                 }
             }
 
         }
 
         if (Input.GetKey("up") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray upRay = new Ray(transform.position, Vector3.forward);
             if (Physics.Raycast(upRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(endPos.x, endPos.y, hit.collider.transform.position.z - 1);
                 }
             }
 
         }
 
         if (Input.GetKey("down") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray downRay = new Ray(transform.position, -Vector3.forward);
             if (Physics.Raycast(downRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(endPos.x, endPos.y, hit.collider.transform.position.z + 1);
                 }
             }
 
         }
         distance = Vector3.Distance(transform.position, endPos);
         //Debug.Log(distance);
         if (distance > 0)
         {
             transform.position = Vector3.Lerp(
                 transform.position, endPos,
                 Time.deltaTime * speed / distance);
             transform.rotation = Quaternion.identity;
         }
         if (distance == 0)
         {
             isMoving = false;
             endPos = transform.position;
         }
 
     }
  
 }

Camera Script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PuzzleCamera : MonoBehaviour
 {
     public void RotateLeft()
     {
         transform.Rotate(Vector3.up, 90, Space.Self);
     }
 
     public void RotateRight()
     {
         transform.Rotate(Vector3.up, -90, Space.Self);
     }
   
 }

I'm trying to get the player controls to rotate as the camera does. Any thoughts?

Player Controller:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PlayerController : MonoBehaviour
 {
 
     public float speed;
     bool isMoving;
     float distance;
     Vector3 endPos;
 
     void Start()
     {
         isMoving = false;
         //rb = GetComponent<Rigidbody>();
     }
 
     private void FixedUpdate()
     {
 
         if (Input.GetKey("left") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray leftRay = new Ray(transform.position, Vector3.left);
 
             if (Physics.Raycast(leftRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(hit.collider.transform.position.x + 1, endPos.y, endPos.z);
                 }
             }
         }
 
         if (Input.GetKey("right") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray rightRay = new Ray(transform.position, Vector3.right);
             if (Physics.Raycast(rightRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(hit.collider.transform.position.x - 1, endPos.y, endPos.z);
                 }
             }
 
         }
 
         if (Input.GetKey("up") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray upRay = new Ray(transform.position, Vector3.forward);
             if (Physics.Raycast(upRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(endPos.x, endPos.y, hit.collider.transform.position.z - 1);
                 }
             }
 
         }
 
         if (Input.GetKey("down") && isMoving == false)
         {
             isMoving = true;
             RaycastHit hit;
             Ray downRay = new Ray(transform.position, -Vector3.forward);
             if (Physics.Raycast(downRay, out hit))
             {
                 if (hit.collider != null)
                 {
                     endPos = new Vector3(endPos.x, endPos.y, hit.collider.transform.position.z + 1);
                 }
             }
 
         }
         distance = Vector3.Distance(transform.position, endPos);
         //Debug.Log(distance);
         if (distance > 0)
         {
             transform.position = Vector3.Lerp(
                 transform.position, endPos,
                 Time.deltaTime * speed / distance);
             transform.rotation = Quaternion.identity;
         }
         if (distance == 0)
         {
             isMoving = false;
             endPos = transform.position;
         }
 
     }
  
 }

Camera Script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PuzzleCamera : MonoBehaviour
 {
     public void RotateLeft()
     {
         transform.Rotate(Vector3.up, 90, Space.Self);
     }
 
     public void RotateRight()
     {
         transform.Rotate(Vector3.up, -90, Space.Self);
     }
   
 }




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 DawidNorasDev · Jul 06, 2018 at 08:09 AM

I you don't want to use Math for it, you can brute force it. You can write on paper what LEFT should mean for every camera orientation (because as I can see you have only 4 orientations). So basically you will have :

 normal -> LEFT
 +90 degrees -> DOWN
 +180 degrees -> RIGHT
 +270 degrees -> UP

Now, you can map other directions. and use it respectively. If you would write all those down, you could see some relations of those numbers and maybe make something more generic. Unfortunately, I don't have time to think about this more generic answer.

Usually better is to break problem down to easier things to do, that you can do. And after that you can understand it more with better solutions.

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

537 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

Related Questions

Issue with my camera controls 0 Answers

Pinch Zoom and Pan while not calling other functions 1 Answer

WASD Movement with Mouse position dictating which way the character is facing 1 Answer

Multiple Cars not working 1 Answer

I need help with TPS controls! 0 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