Как сбросить ротацию игрового объекта? [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сбросить ротацию игрового объекта? [закрыто]

Сообщение Anonymous »

Я хочу сбросить ротацию игрового объекта, когда нажимаю кнопку. Когда беспилотник что -то начинает вращаться, поэтому я хочу нажимать на кнопку мухи и сбросить вращение дрона обратно к своему начальному вращению, чтобы я мог восстановить контроль над дроном во время полета. В настоящее время я храню начальное вращение и проверяю, не равно ли вращение тока не равным начальному вращению, и если это не так, то я установил вращение на начальное вращение. Это работает, пока я нажимаю на кнопку мухи, но когда я отпускаю ее, возвращается к своему предыдущему вращению, пока я не приземлился и не сплющил беспилотник обратно. Это также будет поддерживать скорость, так что даже когда вращение зафиксировано в воздухе, он все еще тянет в направлении, которое оно падает. Это мой код: < /p>
using System;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
[SerializeField] private InputReader inputReader;
private GroundDetection groundDetection;
private BatterySystem batterySystem;
private Rigidbody2D rb;
private Quaternion startingRotation;

[SerializeField] private float moveSpeed = 5;
[SerializeField] private float flyVelocity = 5;

private Vector2 moveInput;
public bool flyInput { get ; private set; }

void Awake()
{
rb=GetComponent();
}
void Start()
{
batterySystem = GetComponent();
groundDetection = GetComponentInChildren();

//Storing the starting rotation
startingRotation = Quaternion.identity;

}

void OnEnable()
{
inputReader.MoveEvent += HandleMove;
inputReader.FlyEvent += HandleFly;
}
void OnDisable()
{
inputReader.MoveEvent -= HandleMove;
inputReader.FlyEvent -= HandleFly;
}

private void Update()
{
Move();
}

private void FixedUpdate()
{
Fly();
}

private void HandleMove(Vector2 _moveInput)
{
moveInput = _moveInput;
}

private void Move()
{
if (!groundDetection.isGrounded)
{

transform.Translate(moveInput * moveSpeed * Time.deltaTime);
}

//checking if I am pressing the fly button and if the current rotation is less than the starting rotation
if (flyInput && transform.rotation != startingRotation)
{
//make current rotation equal to the starting rotation
transform.rotation = startingRotation;
}

}

private void HandleFly(bool _flyInput)
{
flyInput = _flyInput;
}

private void Fly()
{
if(flyInput && batterySystem.currentBattery > 0)
{
rb.AddForce(Vector2.up * flyVelocity, ForceMode2D.Impulse);
}
}
}
< /code>
Я попытался сохранить начальное вращение, проверив, не равно ли вращение тока не равным начальному вращению, и если это не так, я установил вращение, равное начальному вращению. Этот вид работы, пока я держу кнопку Fly, но, как только я отпустил кнопку Fly, она возвращается к своему предыдущему вращению. Это не сработало, когда я что -то ударил и продолжал летать, вращение продолжало вращаться и никогда не возвращался к стартовому вращению вообще. Если я снова нажмею кнопку «Флайт», дрон придет к начальному вращению, что я хочу. Однако, когда я отпускаю кнопку Fly, дрон вернется к своему предыдущему вращению, как видно в следующем GIF:


Подробнее здесь: https://stackoverflow.com/questions/796 ... s-rotation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сбросить ротацию игрового объекта?
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как сбросить ротацию игрового объекта?
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • CagradientLayer, не очень хорошо меняет размер, разрывая ротацию
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как переопределить ротацию сплайна для управляемого игроком автомобиля в гоночной игре?
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как переопределить ротацию сплайна для управляемого игроком автомобиля в гоночной игре?
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»