كيفية الاستمرار في إنشاء خريطة في UE4

يوم جيد للجميع


في مقال سابق ، وصفنا كيفية إنشاء مستوى بأخذ قسم Yandex.Map كمرجع. يبقى أن نتحدث عن "رصف" الطرق وعن الفروق الدقيقة التي واجهتها باستخدام تركيبة العالم ، كوسيلة لتحسين خريطة كبيرة.



الطرق


بالطبع ، الطرق "المرسومة" بواسطة نسيج ممتد المستوى مناسبة تمامًا للاستخدام (على سبيل المثال ، لمحاكاة الطيران) ، ولكن هناك حاجة إلى نهج أكثر تفصيلاً لمحاكاة السيارات. إن العنصر الأكثر ملاءمة لإنشاء الطرق في UE هو Spline ، على الأقل "المقاطع المستمرة الطويلة". لم أواجه حتى الآن تقاطعات وتقاطعات ، على الأرجح سيتعين عليهم إنشاء أشياء منفصلة بأيديهم.


يحتوي Spline على نوعين: مخطط Blueprint و Splines المناظر الطبيعية . الأولى لديها قدرات تخصيص هائلة ويتم تفكيكها بشكل جيد.العاب ملحمة على القناة. بمساعدتهم ، يمكنك التحكم في إنشاء كائنات على طول الطريق مرة واحدة (علامات ، أسوار ، خنادق ، خطوط كهرباء) ، لكنني لم أجد وظائف للدمج مع المناظر الطبيعية في Blueprint Splines ، وتركيب كل متر من الطريق بيدي تحت المنظر الطبيعي (أو العكس بالعكس) ليس ما الذي تريد أن تبدأ به المشروع. لذلك ، اخترت تنسيق المناظر الطبيعية لإنشاء الطرق على الإصدار الأول من المستوى ، فقط باستخدام "أداة تعديل الخطوط" والنقر على النسيج. اتضح خطان - أحدهما لطريق الأسفلت ، والآخر للطريق الترابي. يتم إنشاء مفترق طرق ببساطة عن طريق فرض أحدهما على الآخر. من أجل "تجسيد" المفتاح ، من الضروري أن تقوم الشرائح بتعيين الشبكة. لقد أخذت الجزء النهائي من لعبة المركبات ، وهناك المسار أيضًا ، تم صنعه مثل المناظر الطبيعية (Epic Games Launcher> Unreal Engine> Library> Vault) ، وقطع قطعة معقدة عن المسارات من المواد.اتضح طريق ترابي عظيم! لم يكن من الممكن تكرار مثل هذه الخدعة للأسفلت ، لذلك أخذت نفس الشبكة ، وغيرت المادة في المواد من الطريق الترابي إلى الأسفلت (مثل هذا ) وتطبيقه على Spline مع Z scale = 0.2 ، اتضح بشكل جيد. في النهاية ، يجب ألا تنسى تشويه المشهد تحت Splines ، والذي يتم باستخدام زر واحد فقط ، والطرق جاهزة:



التكوين العالمي


YouTube , , , . UE : World Composition Level Streaming. «» ( , UE ). «», Level Streaming Volumes ( ), .


World Composition 4 4 16 1 1 . , — «» . , — Scale . .. Z-Scale , Z-Scale, ( 16).


World Composition , . , , , :

  1. Make current. , , ( Levels), \ . «» Persistent Level. PlayerStart «», UE , .
  2. MyGameInstance.cpp UE World Composition: Persistent Level > Persistent Level > > > . , .. , , . , , =) , . لسوء الحظ ، لم تسمح لي معرفتي في UE بإعادة إنتاج إصلاح من سلسلة المحادثات هذه واحدًا تلو الآخر ، لقد صنعت للتو فئة C ++ من نوع "GameInstance" وحددتها في خصائص المشروع. MyGameInstance.h و MyGameInstance.cpp على التوالي:

    #pragma once
    
    #include "CoreMinimal.h"
    #include "Engine/GameInstance.h"
    #include "MyGameInstance.generated.h"
    
    UCLASS()
    class SAMPLE_01_API UMyGameInstance : public UGameInstance
    {
    	GENERATED_BODY()
    	
    public:
    	virtual void LoadComplete(const float LoadTime, const FString& MapName) override;
    };
    

    
    #include "MyGameInstance.h"
    #include "Engine/World.h"
    #include "Engine/WorldComposition.h"
    #include "Engine/LevelStreaming.h"
    
    void UMyGameInstance::LoadComplete(const float LoadTime, const FString & MapName)
    {
    	Super::LoadComplete(LoadTime, MapName);
    	
    	UWorld* World = GetWorld();
    	
    	// WorldComposition won't work in Standalone mode without next statement
    	if ( World->WorldComposition ) {
    		const TArray<ULevelStreaming*> TilesStreaming = World->WorldComposition->TilesStreaming;
    		World->ClearStreamingLevels();
    		World->SetStreamingLevels(TilesStreaming);
    	}
    	
    	// "Pause" game till streaming complete
    	GEngine->BlockTillLevelStreamingCompleted(World);
    }
    


هذا كل شئ حتى الان. تخبر الخطط عن إنشاء قائمة البدء وخريطة مصغرة في اللعبة. شكرا.


All Articles