Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Я первый день в Unreal Engine 5, вопрос

Kolyan Chik Ученик (25), на голосовании 1 месяц назад
как сделать так, чтобы при нажатии "R" мой актор перемещался к указанным координатам (Проект пишется на Blueprint)
Голосование за лучший ответ
Андрей - Профи (870) 2 месяца назад
Шаги для реализации в Blueprints:

1. **Создание переменной для координат**:
- Откройте ваш Blueprint персонажа (например, `BP_Character`).
- Создайте новую переменную типа `Vector`, назовите ее, например, `TargetLocation`.

2. **Настройка ввода**:
- Перейдите в `Edit` > `Project Settings` > `Input`.
- В разделе `Action Mappings` добавьте новое действие (например, `MoveToLocation`) и назначьте клавишу "R".

3. **Обработка ввода в Blueprint**:
- В вашем Blueprint персонажа, добавьте событие `InputAction MoveToLocation` (это будет событие с тем названием, которое вы создали на предыдущем шаге).
- После этого добавьте ноду `Set TargetLocation`, чтобы задать новые координаты. Это можно сделать, например, напрямую в точке, где вы хотите, чтобы персонаж перемещался, или можете установить фиксированные значения (например, `Vector(100, 200, 0)`).

4. **Перемещение персонажа**:
- После установки `TargetLocation`, используйте ноду `AI MoveTo` или `Simple Move to Location`, в зависимости от того, использует ли ваш персонаж AI Controller или нет.
- Подключите `TargetLocation` к ноде `Destination` в `AI MoveTo`.

### Примерный граф:

1. Событие:
- `InputAction MoveToLocation`

2. Действия:
- `Set TargetLocation`
- Вход: желаемые координаты.
- `AI MoveTo` или `Simple Move to Location`
- Убедитесь, что `Pawn` или `Character` подключен в качестве `Target Actor`, а `TargetLocation` подключен как `Destination`.

### Примерный код на C++

Если вы хотите сделать это на C++, вот примерный код:

1. **В вашем классе персонажа**:
// Character.h
public:
FVector TargetLocation;

protected:
virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;
void MoveToTargetLocation();


2. **В реализациях функции**:
// Character.cpp
#include "GameFramework/PlayerController.h"

void AYourCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAction("MoveToLocation", IE_Pressed, this, &AYourCharacter::MoveToTargetLocation);
}

void AYourCharacter::MoveToTargetLocation()
{
TargetLocation = FVector(100.f, 200.f, 0.f); // Установите желаемые координаты

// Перемещение персонажа
APlayerController* PC = Cast<APlayerController>(GetController());
if (PC)
{
PC->MoveToLocation(TargetLocation);
}
}


3. **Настройка Input**:
- Не забудьте добавить `MoveToLocation` в настройки ввода.
А вообще лучше научиться писать скрипты кодом, так открываются все возможности ООП в UE.
Похожие вопросы