using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class PlayerJump : MonoBehaviour
{
public float jumpForce = 7f; // Сила прыжка
private bool _isGround = false;
[SerializeField] private Transform sprite;
[SerializeField] private float rotateSpeed;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if (Input.GetMouseButtonDown(0) && _isGround == true)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); // Используйте ForceMode2D.Impulse
_isGround = false;
}
if (!_isGround)
RotateSprite();
}
private void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.tag == "ground")
{
_isGround = true;
}
}
private void RotateSprite()
{
Vector3 e = sprite.eulerAngles;
e.z += rotateSpeed;
sprite.rotation = Quaternion.Euler(e);
}
}
Вот код, в RotateSprite, игрок переворачивается как в geometry dash, но да он переворачивается но он становиться на угол и не очень ровно ложиться, вот как мне сделать чтобы он четко переворачивался и четко ложился на бок и тд?
using UnityEngine;
public class CubeController : MonoBehaviour
{
public float rotationAmount = 90.0f;
public KeyCode rotateKey = KeyCode.Space; // Или любую другую клавишу, которую вы хотите использовать
private bool isRotating = false;
void Update()
{
if (Input.GetKeyDown(rotateKey) && !isRotating)
{
isRotating = true;
RotateCube();
}
}
void RotateCube()
{
float targetAngle = transform.eulerAngles.z + rotationAmount;
Quaternion targetRotation = Quaternion.Euler(0, 0, targetAngle);
StartCoroutine(RotateCoroutine(targetRotation));
}
System.Collections.IEnumerator RotateCoroutine(Quaternion targetRotation)
{
float duration = 0.5f; // Продолжительность анимации в секундах
Quaternion startRotation = transform.rotation;
float time = 0.0f;
while (time < duration)
{
transform.rotation = Quaternion.Lerp(startRotation, targetRotation, time / duration);
time += Time.deltaTime;
yield return null;
}
transform.rotation = targetRotation;
isRotating = false;
}
}