Search Unity

Rotation Position Not Working Properly

Discussion in 'Scripting' started by cgkaransahu, Feb 1, 2020.

  1. cgkaransahu

    cgkaransahu

    Joined:
    Jan 8, 2020
    Posts:
    5
    Hello ,
    I am Karan
    and I want make a 3d game In which I want my player and camera to rotate when my player
    reaches a designated place.


    But ,
    I have set the rotation angle instead it is moving at the wrong angle

    And If you want Script or project file i can give.
     
  2. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,447
  3. cgkaransahu

    cgkaransahu

    Joined:
    Jan 8, 2020
    Posts:
    5
    Player Script:

    Code (CSharp):
    1. using UnityEngine;
    2.  
    3. public class PlayerController : MonoBehaviour
    4. {
    5.     [SerializeField]
    6.     float PlayerSpeed;
    7.  
    8.     Transform PlayerTransform;
    9.     [SerializeField]
    10.     Transform Camera;
    11.  
    12.     public static bool MovementEnable;
    13.     private void Start()
    14.     {
    15.         PlayerTransform = GetComponent<Transform>();
    16.     }
    17.  
    18.     void Update()
    19.     {
    20.         if (MovementEnable == false)
    21.         {
    22.             Movement();
    23.         }
    24.  
    25.         if (PlayerTransform.position.x == 35.5f)
    26.         {
    27.             Camera.Rotate(0,90,0,Space.Self);
    28.         }
    29.     }
    30.  
    31.     void Movement()
    32.     {
    33.         Vector3 GetInput = new Vector3(0, 0, Input.GetAxisRaw("Vertical"));
    34.         Vector3 Direction = GetInput.normalized;
    35.         Vector3 Velocity = Direction * PlayerSpeed;
    36.         Vector3 MoveAmount = Velocity * Time.deltaTime;
    37.  
    38.         transform.Translate(MoveAmount);
    39.     }
    40. }
    Camera :

    Code (CSharp):
    1. using UnityEngine;
    2.  
    3. public class CameraFollow : MonoBehaviour
    4. {
    5.     [SerializeField]
    6.     Transform Player;
    7.  
    8.     Vector3 offset;
    9.     private void Awake()
    10.     {
    11.         offset = transform.position - Player.position;
    12.     }
    13.  
    14.     private void Update()
    15.     {
    16.         transform.position = Player.position + offset;
    17.     }
    18. }
     
  4. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,447
    do you want to set camera rotation to: 0,90,0
    or rotate 90 degrees on y axis, did you try using Space.World?

    or maybe just easier to set look at direction,
    Camera.LookAt(yourtarget);
     
    cgkaransahu likes this.
  5. cgkaransahu

    cgkaransahu

    Joined:
    Jan 8, 2020
    Posts:
    5
    Thank you So much