Андрей -
Профи
(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.