Jusper Jusper

EfimovMax есть че сказать по этому поводу?

coderDimka coderDimka

Спасибо большое за этот гайд! А то уже волосы дыбом от отсутствия инфы)) Хотелос бы больше по этой теме. Например, что дальше. Т.е. я подключился к тестовому серверу стим. Как теперь мне синхронизировать двух и более игроков...

...
Tartal Tartal

Jusper, да, беда)

Tartal Tartal

Jusper, патронную ленту я всё же по-другому в итоге проведу (к герою, скорее всего). А затвор передёргивать не нужно, это не затвор, а рукоятка для левой руки, дробовик полностью автоматический)

Вот так он сейчас выглядит в ортографическом виде сбоку...

...
Jusper Jusper

У нас тут два экстерминатора нарисовалось)

Jusper Jusper

Геймплей выглядит довольно динамичным даже в прототипе, а вот визуал надо очень сильно подтянуть. Свет и взаимодействие моделей с ним создает вообще несуразную картинку, ничо не понятно.
Не увидел нигде...

Jusper Jusper

Tartal,

Мне как раз нравился его резкий прямой скос, который ты в модели превратил в ручку гвоздемета.

Tartal Tartal

Jusper, один и тот же, просто во время создания модели пересмотрел некоторые вещи и решил немного его переделать) Сделать более необычным и убойным.

Jusper Jusper

Tartal,

Это, блин, нифига не скетч, а целый промоматериал :)

Valdram Valdram

Скриншоты из заявки для джема об участии в котором можно лишь жалеть со всякой точки зрения. Но сборка за такой срок представляет собой пусть и несовершенный, а именно Идейный пирог. Результат: https://valdram.itch.io/pipe-and-3-legs

...
alexprey alexprey

Хм, шотган миниган хорошш, представляю какое решето из анурана получится если сразу из четырех стволов пальнуть)

Tartal Tartal

Недавно набросал скетч автоматического дробовика. А сегодня доделал его модель (в процессе не слабо поменяв концепцию), но пока без каких-либо текстур и, тем более, анимаций.

Кратко об этом оружии:

Jusper Jusper

E.S., не там чисто на игру трехмерную был.
Я в рамках нее экспериментировал.

E.S. E.S.

Jusper, спасибо, я думал по шейдерам курс) Но я там и по шейдерам нашел парочку.

Jusper Jusper

E.S., сейчас курс поделился на 2, раньше было и 3D и 2D в одном.
https://www.udemy.com/share/1000PU/

E.S. E.S.

а можно ссылку на курс на Udemy?

Логотип проекта Unreal Engine

Пилим платформер на UE4 - часть 8 (C++)

Пилим платформер на UE4 - часть 8 (C++)

Делаем летающую платформу, используя C++ вместо блюпринтов. Платформа умеет летать между набором фиксированных точек, замирая на каждой на указанный интервал времени.

Исходники из видео

CPP:

#include "FloatPlatform.h"
#include <EngineGlobals.h>
#include <Runtime/Engine/Classes/Engine/Engine.h>

FVector spos;
FVector cpos;
FVector tpos;
FVector k;
int32 cpoint=0;
int32 tpoint = 1;
float pointtimer = 0;



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

}

// Called when the game starts or when spawned
void AFloatPlatform::BeginPlay()
{
    Super::BeginPlay();
    if (lpts > 1)
    {
        cpoint = 0;
        tpoint = 1;
        cpos = points[cpoint];
        SetActorLocation(cpos);
        spos = cpos;
        tpos = DefTPOS(tpoint);
    }

}

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

}

void AFloatPlatform::MovePlatf(float dt)
{
    int32 ckx;
    int32 ckz;

    cpos = GetActorLocation();

    //вектор дистанции
    FVector dv = tpos - spos;
    float dst=FMath::Abs(dv.FVector::Size());

    //коэффициент направления по Х
    if (tpos.X > cpos.X)
    {
        ckx = 1;
    }
    else
    {
        ckx = -1;
    }
    k.X = (FMath::Abs(dv.X)*ckx) / dst;
    GEngine->AddOnScreenDebugMessage(-1, 0.01f, FColor::Red, FString::Printf(TEXT("ckx=%d; kx=%f; dvX=%f"), ckx, k.X,dv.X));
    
    //у нас 2д игра, нет движения по У
    k.Y = 0;

    //то же для Z
    if (tpos.Z > cpos.Z)
    {
        ckz = 1;
    }
    else
    {
        ckz = -1;
    }
    k.Z = (FMath::Abs(dv.Z)*ckz) / dst;

    //собственно движение
    if (pointtimer <= 0)
    {
        cpos += k * spd*dt;
    }
    else
    {
        pointtimer -= dt;
    }

    //расстояние от текущей точки до активной цели
    float dd = (tpos - cpos).FVector::Size();

    //если платформа возле точки
    if (dd <= (spd * dt * 2))
    {
        //смещаемся на точку вперед
        cpoint++;
        tpoint++;

        //если дошли до номинального конца массива точек, съезжаем на начало
        if (cpoint > (lpts - 1))
        {
            cpoint = 0;
        }
        if (tpoint > (lpts - 1))
        {
            tpoint = 0;
        }
        spos = cpos;
        tpos = DefTPOS(tpoint);

        //принудительно помещаем платформу на заданную точку
        cpos = DefTPOS(cpoint);

        pointtimer = pointtime;
    }    
    
    SetActorLocation(cpos,true);

    if (GEngine) {
        GEngine->AddOnScreenDebugMessage(-1, 0.01f, FColor::Yellow, FString::Printf(TEXT("cp=%d; tp=%d; dd=%f"), cpoint, tpoint, dd));
    }
}

FVector AFloatPlatform::DefTPOS(int32 pnt)
{
    return points[pnt];
}

H:

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

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "FloatPlatform.generated.h"

UCLASS()
class GENEPRINCESS_API AFloatPlatform : public AActor
{
    GENERATED_BODY()
    
public:    
    AFloatPlatform();

protected:

    //объявления функций
    virtual void BeginPlay() override;
    void MovePlatf(float dt);
    FVector DefTPOS(int32 pnt);

    //объявления свойств
    UPROPERTY(EditAnywhere)
        float spd = 250;
    UPROPERTY(EditAnywhere)
        float lpts = 2;
    UPROPERTY(EditAnywhere)
        float pointtime = 1;
    UPROPERTY(EditAnywhere)
        TArray <FVector> points;
    
    //основные переменные
    FVector spos;
    FVector cpos;
    FVector tpos;
    FVector k;
    int32 cpoint;
    int32 tpoint;
    float pointtimer;
    

public:    
    // Тик
    virtual void Tick(float DeltaTime) override;

    
};


Дарин, наконец-то добрался до просмотра! Вступление огонь! вот только звук речи очень тихий, приходится вслушиваться. С 10 минуту чуть получше стало со звуком.

В целом годно, спасибо за материал!)