yo_serjio yo_serjio

alexprey, редактор зданий да) с возможностью шейрить прессеты другим людям)
На данном этапе можно только пристрои делать, поддержка полной смены архитектуры в будущем планируется)

Mariya Mariya

Всем привет!
Новый ролик на движке. Сегодня мы покажем Вам бытовые сцены из жизни Сырны, и то как мы расставили мебель в ее домике.

RedHelium RedHelium

Работаю над освещением и над игровым контроллером, скоро приступлю к разработке прототипа города. Пока некоторые наброски..

alexprey alexprey

О это что то вроде редактора зданий? Можно самостоятельно новые дома собирать?

yo_serjio yo_serjio

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

Jusper Jusper

yo_serjio, через воркшоп будет потом работать?
Пока что, работает перебросом текстового файла с городом, в теории должно и сообщением передаваться.

yo_serjio yo_serjio

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

Jusper Jusper

Вернул тебе ссылку на ич, невалидная была.
Выглядит оч круто. Надо пощупать. А в чем смысл такого редактора в игре? Что можно будет делать?

Tartal Tartal

Попробовал воплотить злодея-пришельца (раса до сих пор без названия) для Exterminator'а в 3D, скетч которого я недавно показывал здесь:

EfReeZe EfReeZe

SINILIAN, привет, мультфильм "Планета сокровищ". Рекомендую :)

Mariya Mariya

Всем привет!
Сегодня хочу показать Вам полный комплект мебели для домика Сырны.

Wings' might Wings' might

Всем привет друзья, на этой неделе я добавил отображение урона, критические удары; обновил интерфейс магазина и изменил меню способностей

Следить за ежедневными изменениями: https://vk.com/wingsmight

Razz Razz

Сбегаем от контролёра
https://vk.com/iron_meat_game

SINILIAN SINILIAN

С приветом)) Что за мульт или фильмец?
(последний трек если что)

Mariya Mariya

Всем привет!
В мире Сырны появилось второе живое существо - лягушка!

Wings' might Wings' might

Всем привет, друзья)
На этой неделе добавил достижения, статистику и дополнительную информацию в виде отдельных панелек. (можно увидеть на гифке)

Tartal Tartal

Нарисовал очередной (считаю, пока что лучший) концепт злодейской расы пришельцев для Exterminator'а.
Начал придумывать вид брони, сделал шлем-маску, но пока это всё наброски. Броню буду переделывать, а шлем наверно просто улучшать...

...
Jusper Jusper

Mariya, отлично выглядит. Эдакий болотный домец.
Круто следующий раз рядом и саму героиню увидеть, чтобы масштабы и стилистику сравнить.

Dreaman Dreaman

Mariya, законченный вариант реально классно выглядит! Молодец :)

Логотип проекта 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 минуту чуть получше стало со звуком.

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