Elezthem
@Elezthem
Full Stack Developer

Физика прыжка квадратика, как сделать чтобы квадратик переворачивался в полете как в гд?

Вот код ниже того что квадратик прыгает и есть шипи и земля, вот как сделать чтобы он во время прыжка переворачивался как в оригинальной гд? Ну типа кто играл тот знает что квадратик переворачивается во время прыжка, вот как это так сделать? Я сам не знаю и через ChatGPT не вышло желаемого результата, суть чтобы квадратик мог во время прыжка переворачиваться как в гд.

Вот код квадратика.
using UnityEngine;
using UnityEngine.SceneManagement;

public class PlayerController : MonoBehaviour
{
    public float jumpForce = 5f;
    public float moveSpeed = 3f;
    private bool isGrounded = true;

    void Update()
    {
        if (Input.GetMouseButtonDown(0) && isGrounded)
        {
            Jump();
        }

        transform.Translate(Vector2.right * moveSpeed * Time.deltaTime);
    }

    void Jump()
    {
        GetComponent<Rigidbody2D>().velocity = new Vector2(0, jumpForce);
        isGrounded = false;
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("ground"))
        {
            isGrounded = true;
        }
        else if (collision.gameObject.CompareTag("Spike"))
        {
            DieAndRespawn();
        }
    }

    void DieAndRespawn()
    {
        // Добавьте здесь дополнительные действия перед смертью (анимации, звуки и т.д.).

        // Перезагрузка текущей сцены (возрождение на том же месте)
        Scene currentScene = SceneManager.GetActiveScene();
        SceneManager.LoadScene(currentScene.name);
    }
}
  • Вопрос задан
  • 407 просмотров
Решения вопроса 1
Elezthem
@Elezthem Автор вопроса
Full Stack Developer
М-да ну и программисты....
Вот сам же на свой вопрос ответил
using UnityEngine;
using System.Collections;

public class SquareController : MonoBehaviour
{
    public float rotationAmount = 90.0f;
    

    private bool isRotating = false;

    void Update()
    {
        if (Input.GetMouseButtonDown(0) && !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;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы