Question by
unity_uzc_nMUPAy-3iw · Aug 28, 2020 at 09:30 PM ·
rotationvelocityphysics2d
Rotate the velocity of player
I am making a 2D physics puzzle game involving portals, but currently when the player goes through a portal it has the same velocity. I want to change this so that the velocity of the player is rotated based on the rotations of the portals (similar to the original Portal game by Valve). I have worked out how much they need to rotate by, but have no idea how to actually change the direction while keeping the same speed.
Thanks
This is my current code in the player object:
using System.Collections;
using UnityEditor.Experimental.UIElements.GraphView;
using UnityEngine;
public class PortalScript : MonoBehaviour
{
private bool canTeleport = true;
private float orangePortalRotation;
private float bluePortalRotation;
private float rotationDifference;
private float directionx;
private float directiony;
public float thrust = 10f;
public Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
orangePortalRotation = GameObject.Find("PortalOrange").transform.rotation.eulerAngles.z;
bluePortalRotation = GameObject.Find("PortalBlue").transform.rotation.eulerAngles.z;
}
// Update is called once per frame
void Update()
{
Vector2 direction = rb.velocity.normalized;
directionx = direction.x;
directiony = direction.y;
//Debug.Log(direction);
Debug.Log(rotationDifference);
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Blue" && canTeleport == true)
{
Vector2 teleportPos = GameObject.FindGameObjectWithTag("OrangeChile").transform.position;
transform.position = new Vector2(teleportPos.x, teleportPos.y);
rotationDifference = bluePortalRotation - orangePortalRotation;
if (rotationDifference == 90 || rotationDifference == - 270)
{
}
}
if (collision.gameObject.tag == "Orange" && canTeleport == true)
{
Vector2 teleportPos = GameObject.FindGameObjectWithTag("BlueChile").transform.position;
transform.position = new Vector2(teleportPos.x, teleportPos.y);
rotationDifference = bluePortalRotation - orangePortalRotation;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Up Velocity 1 Answer
How do I make a 2D spaceship rotate to my mouse? 0 Answers
How to apply rotation direction to velocity? 0 Answers
Trying to add force to an object... is this done correctly? 0 Answers
Rotate Rigidbody2D by Touch 1 Answer