Пожалуйста, имейте в виду, что я новичок.
Я пытаюсь создать космический шутер.У меня есть 2D-спрайт, обращенный вверх, и этот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed = 5.0f;
private void Start()
{
transform.position = Vector3.zero;
}
private void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 eulerAngles = transform.rotation.eulerAngles;
//Debug.Log("transform.rotation angles x: " + eulerAngles.x + " y: " + eulerAngles.y + " z: " + eulerAngles.z);
transform.Translate(Vector3.right * speed * horizontalInput * Time.deltaTime, Space.World);
transform.Translate(Vector3.up * speed * verticalInput * Time.deltaTime, Space.World);
if (horizontalInput > 0)
{
transform.Rotate(new Vector3(0, 0, -1) * horizontalInput * Time.deltaTime * 300);
}
else if (horizontalInput < 0)
{
transform.Rotate(new Vector3(0, 0, -1) * horizontalInput * Time.deltaTime * 300);
}
if (eulerAngles.z > 45)
{
//transform.rotation = Quaternion.AngleAxis(45, Vector3.forward);
Debug.Log("45");
if (eulerAngles.z < -45)
{
//transform.rotation = Quaternion.AngleAxis(-45, Vector3.forward);
Debug.Log("-45");
}
Сейчас я хочу, чтобы в журнале было написано «45», когда значение в Transform.rotation.z достигает 45, и «-45», когдаэто достигает -45.Мое реальное намерение (закомментированное в коде) состоит в том, чтобы затем сказать спрайту остановить вращение на 45 или -45 градусов.
Когда я нажимаю стрелку влево, пока она не поворачивается на 45, это работает.Но вот в чем проблема ... Когда я нажимаю стрелку вправо, значение Transform.rotation.z становится отрицательным, и в журнале сразу появляется 45, как будто любое отрицательное число как-то превосходит 45.
Я замечаю, что когда я вращаю спрайт в Unity, значения Transform.rotation.z проходят своего рода цикл до 180, затем становятся отрицательными до 0 и наоборот.
Может кто-нибудь сказать мне, что мне не хватает?Я пропускаю другие более простые и эффективные способы достижения того, что я ищу?
Заранее спасибо за вашу помощь, я действительно ценю это.Я новичок и все еще пытаюсь понять многие понятия.