Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 4
Добрый день всем! Подскажите пожалуйста, могу ли я каким угодно образом заставить двигаться персонажа на основе Actor? (Не Pawn) Я только недавно начал изучать уе4, но мне хочется попробовать написать собственный чарактер с меньшим функционалом чисто для тренировки. Но вот вопрос - как лучше это сделать?
К примеру, я создам класс-наследник от AActor. Затем одно из нескольких вариантов:
1. Использовать ActorMovementComponent, но не знаю, чем он отличается от PawnMovementComponent (либо же использовать второе, к примеру)
2. Покопаться в EnableMovement у Actor`а и через него всё делать

Как лучше быть? Что лучше использовать?
Аватара пользователя
Пользователь
Сообщения: 4069
SetActorLocation, AddActorLocation ты можешь двигать что угодно используя эти функции, можешь двигать по forward вектору, можешь двигать по right вектору, можешь двигать по forward + right вектору, также все предыдущие варианты умножить на -1 что бы инвертировать направление.
Также еще есть и up вектор. Можешь двигать и резко и плавно, и наращивая скорость постепенно, как напишешь так и будет.

p.s. я не много в шоке от начинающих с++ сников, еще не поняли как вообще все работает, но начинается все, с создания наследников.

как лучше быть> учить разнообразные инструменты движка
что лучше использовать > мозг и накопленные знания.
Аватара пользователя
Пользователь
Сообщения: 4
Prytaleks писал(а):
SetActorLocation, AddActorLocation ты можешь двигать что угодно используя эти функции


А если я хочу именно не просто устанавливать новые значения, а именно передвигать объекты как физические предметы? То есть, если врезаются в стенку, то пусть не передвигаются, к примеру. Ибо через установку вектора они тупо будут проходить через всё
Аватара пользователя
Пользователь
Сообщения: 4069
NoirMorilec писал(а):
Prytaleks писал(а):
SetActorLocation, AddActorLocation ты можешь двигать что угодно используя эти функции


А если я хочу именно не просто устанавливать новые значения, а именно передвигать объекты как физические предметы? То есть, если врезаются в стенку, то пусть не передвигаются, к примеру. Ибо через установку вектора они тупо будут проходить через всё


https://api.unrealengine.com/INT/API/Ru ... index.html

надеюсь гугл переводчик уже осилил

вообще существует больше функций для движения, вот еще одна функция(не последняя) - https://api.unrealengine.com/INT/API/Ru ... index.html


p.s. лучше пару лет движок поучить, а потом уже смело и уверенно изобретать велосипед.
В таком случае даже если бы в этих функциях не было бы таких вещей как Sweep и Teleport ты мог бы запустить лайнтрэйс и запретить движение, если необходимо.
Аватара пользователя
Пользователь
Сообщения: 4
Спасибо, с этим разобрался. А могу ли я добавить бинды кнопок для актора, у которого нету inputcomponent? Чтобы я мог передвигать actor`а по какой-либо клавише? (Ибо у Pawn это есть уже, а у Actor`а не вижу)

https://answers.unrealengine.com/questi ... an-ac.html

Ибо тут говорят, что это невозможно, но я тогда не совсем понимаю, в чем смысл всяких функций в классе actor в виде "enable input" и прочее

Кстати, с Новым Годом!
Аватара пользователя
Пользователь
Сообщения: 4069
актор должен быть помечен как "игрок", что бы работали кнопки.
Аватара пользователя
Пользователь
Сообщения: 82
Prytaleks писал(а):
актор должен быть помечен как "игрок", что бы работали кнопки.

Какой ещё игрок, что игрок ? какой код будет игрок выпольнять ? Нужно добавить InputComponent и обработать его

Для AActor например так:

В .h файле
Код:
#include "Runtime/Engine/Classes/Components/InputComponent.h"

...
В классе
Код:
void SetupMyPlayerInputComponent(UInputComponent* myInputComponent);


В .cpp файле:

Код:
void AMyActor1::BeginPlay()
{
    Super::BeginPlay();

    EnableInput(GetWorld()->GetFirstPlayerController());
    UInputComponent* myInputComp = this->InputComponent;
    if (myInputComp) {
        SetupMyPlayerInputComponent(myInputComp);
    }
}

void AMyActor1::SetupMyPlayerInputComponent(UInputComponent* myInputComponent) {
    //UE_LOG(YourLog, Warning, TEXT("SETUP PLAYER INPUT COMPONENT"));
    //Super::SetupPlayerInputComponent(InputComponent);   //Another experimental thing

    myInputComponent->BindAction("mKey1", IE_Pressed, this, &AMyActor1::keyE);
}

void AMyActor1::keyE() {
    UE_LOG(LogTemp, Warning, TEXT("ss"))
}

_________________
Мой плагин https://www.unrealengine.com/marketplace/instance-editor он же тут https://uengine.ru/forum/viewtopic.php?f=24&t=18053
Аватара пользователя
Пользователь
Сообщения: 4069
semusto писал(а):
Какой ещё игрок, что игрок ? какой код будет игрок выпольнять ? Нужно добавить InputComponent и обработать его


я имел ввиду указать нужной актор в геймоде, после чего инпуты можно добавлять как в настройках проекта, так и в самом акторе, также не забыть про Auto Recive Input в настройках актора.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница