- Home /
Question by
ergncyln2127088 · May 28, 2021 at 10:01 AM ·
rotationmovementunity 2drigidbody2dphysics2d
In unity 2D c# how to rotate an object like geometry dash?
I'm newbie here, but will try to describe as clear as I can. At my game my main character is cube and if press space its jumping dependig on how much you press the button but i want to rotate my cube 90 degrees when pressing the space button but im working about this for 10 hours but i couldn't achieve how to do that can anyone help me. Thank you
[Game Video][1]
This is my code :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerEverything : MonoBehaviour{
public Transform GroundCheck; // Put the prefab of the ground here
public LayerMask groundLayerBlue; // Insert the layer here.
public LayerMask groundLayerPurple;
public bool isGroundedBlue;
public bool isGroundedPurple;
private Rigidbody2D rb2D;
private float jumpTimer;
private float timeCount = 0.0f;
private bool isGrounded;
public Transform groundCheck;
public LayerMask groundLayer;
public float time;
// Start is called before the first frame update
public void Start()
{
rb2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
public void Update()
{
isGroundedBlue = Physics2D.OverlapCircle(GroundCheck.position, 0.15f, groundLayerBlue);
if (isGroundedBlue)
{
transform.position += Vector3.right/60;
}
isGroundedPurple = Physics2D.OverlapCircle(GroundCheck.position, 0.15f, groundLayerPurple);
if (isGroundedPurple)
{
transform.position += Vector3.left / 60;
}
if (isGrounded)
{
if (Input.GetKey(KeyCode.Space))
{
jumpTimer += Time.deltaTime;
}
if (Input.GetKeyUp(KeyCode.Space))
{
DoJump(350f * jumpTimer);
jumpTimer = 0;
}
}
if (Input.GetKeyUp(KeyCode.Space))
{
StartCoroutine(Rotate());
}
}
private void FixedUpdate()
{
isGrounded = Physics2D.OverlapCircle(groundCheck.position, 0.2f, groundLayer);
}
public void DoJump(float JumpForce)
{
float jumpForceMagnitutde = Mathf.Clamp(JumpForce/3, 0, 50);
rb2D.AddForce(Vector2.up * jumpForceMagnitutde/3, ForceMode2D.Impulse);
rb2D.AddForce(Vector2.right*jumpForceMagnitutde/10,ForceMode2D.Impulse);
}
IEnumerator Rotate()
{
Quaternion startRotation = transform.rotation;
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 90), 1);
yield return null;
}
}
Comment
Answer by mevsvader · May 28, 2021 at 04:48 PM
didnt read ur code but rotatetowards and rotatearound should help. check for jump input, then select direction and rotate Z - or + 90 in the direction u want.