Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 1
Привет всем! Такой вопрос: как сделать управляемое передвижение персонажа, так, чтобы управление осуществлялось с помощью стандартных клавиш WASD. Заранее спасибо! Тот код что есть, не работает.

// Fill out your copyright notice in the Description page of Project Settings.

#include "Camera.h"
#include "GameFramework/SpringArmComponent.h"
#include "GameFramework/Character.h"
#include "Camera/CameraComponent.h"

// Sets default values
ACamera::ACamera()
{
// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;

MyRootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootModel"));

RootComponent = MyRootComponent;

CameraSpring = CreateDefaultSubobject<USpringArmComponent>(TEXT("Spring"));

CameraSpring->SetRelativeLocation(FVector(0, 0, 0));
CameraSpring->AttachToComponent(MyRootComponent, FAttachmentTransformRules::KeepRelativeTransform);

MyCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
MyCamera->AttachToComponent(CameraSpring, FAttachmentTransformRules::KeepRelativeTransform);
// MyCamera->AttachTo(CameraSpring, USpringArmComponent::SocketName);

CameraSpring->SetRelativeRotation(FRotator(-90.f, 0, 0));
CameraSpring->TargetArmLength = 300.f;
CameraSpring->bDoCollisionTest = false;

AutoPossessPlayer = EAutoReceiveInput::Player0;
}

// Called when the game starts or when spawned
void ACamera::BeginPlay()
{
Super::BeginPlay();

AddSpacemanToMap();
}

// Called every frame
void ACamera::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);

}

// Called to bind functionality to input
void ACamera::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAxis("Moving", this, &ACamera::FMove);
}

void ACamera::FMove(float ButVal)
{
int Key = ButVal;
FVector2D WSAD;

switch (Key)
{
case 1:
WSAD = FVector2D(0, 0);
WSAD.Y = 1;
break;

case 3:
WSAD = FVector2D(0, 0);
WSAD.X = 1;
break;

case 4:
WSAD = FVector2D(0, 0);
WSAD.X = -1;
break;
}
if (MySpaceman)
{
MySpaceman->DirectionMoveSpaceman = &WSAD;
}

}

void ACamera::AddSpacemanToMap()
{
FVector PlayerStart = GetActorLocation();
FRotator PlayerStartRotation = GetActorRotation();

if (GetWorld())
{
MySpaceman = GetWorld()->SpawnActor<ASpaceman>(PlayerStart, PlayerStartRotation);
}
}


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

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