SnapTap / реализация индивидуального движенияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 SnapTap / реализация индивидуального движения

Сообщение Anonymous »

Я пытаюсь реализовать в своей игре в UE5 некоторые функции, которые работают как Snaptap. Вот код, который я использую в качестве основы:

Код: Выделить всё

void APlayerCharacter::Move(const FInputActionValue& Value)
{
FVector2D InputVector = Value.Get();

if (IsValid(Controller))
{
//Get Forward Direction
const FRotator Rotation = Controller->GetControlRotation();
const FRotator YawRotation(0, Rotation.Yaw, 0);

const FVector ForwardVector = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
const FVector SideVector = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);

// Add Movement Input
AddMovementInput(ForwardVector, InputVector.Y);
AddMovementInput(SideVector, InputVector.X);
}
}
Я заметил, что когда я двигаюсь вправо и нажимаю левую клавишу направления, персонаж меняет направление, не отпуская правую клавишу направления, но обратного не происходит.Я хочу, чтобы последний ввод переопределял предыдущий, не отпуская первый ввод, если они направлены в противоположные стороны. Функционирует как Snaptap.
Есть ли у кого-нибудь идеи, как мне это сделать, чтобы добиться желаемого поведения?
Я попробовал другой код:

Код: Выделить всё

void APlayerCharacter::MoveRightForward(const FInputActionValue& Value)
{
FVector2D InputVector = Value.Get();

if (IsValid(Controller))
{
// Get Forward and Side Directions based on the Yaw
const FRotator Rotation = Controller->GetControlRotation();
const FRotator YawRotation(0, Rotation.Yaw, 0);

const FVector ForwardVector = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
const FVector SideVector = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);

// Apply movement only for positive input values (right and forward)
if (InputVector.X > 0.0f) // Right movement
{
AddMovementInput(SideVector, InputVector.X);
}
if (InputVector.Y > 0.0f) // Forward movement
{
AddMovementInput(ForwardVector, InputVector.Y);
}
}
}
Это позволяет персонажу оставаться на месте, если одновременно нажимаются кнопки ввода в противоположных направлениях.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ementation
Ответить

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

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

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

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

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