Beiträge von JonnyMachony

    Phoenix super Antwort danke, das mit dem Thread kommt mir sehr komplex vor.

    Wegen dem Random Sequenzer, den kenn ich, das Problem ist, dass der Sequencer die Animationen loopen lässt, was ich dort nicht abstellen kann, deshalb habe ich einen Umweg gesucht um den Random Sequenzer nicht zu nutzen.

    unegfähr verstanden, mein Beispiel gilt nur für den SpielerCharacter, es soll mal die eine, mal die andere Animation spielen, der Zufall soll entscheiden. Was hat das mit irgendwelchen Threads zu tun? ich habe ja nur eine Figur. Naja.

    Danke für eure Erklärungen,

    was ist ein Thread?

    Und nein, mein Beispiel funktioniert nicht, es wird keine Zufallszahl generiert, die dann eine zufällige Animation abspielt, schade, warum eigentlich nicht?

    wie würde es stattdessen gehen?

    eigentlich einfacher Gedanke, den ich umsetzen will, aber stellt sich schwierg dar.

    sorry wenn ich nerve, aber ihr beantwortet die Fragen echt gut und hilfreich, vllt hilfts ja der Community auch.

    Jedenfalls entdecke ich das Makro? oder was es auch immer ist, das hier:


    checkf(Ammo + Amount <= MagazineCapacity, TEXT("Versucht nachzuladen mit mehr als Magazin Kapazitaet"));


    dieses checkf sehe ich auch nun zum ersten mal. ich kenne wohl "check()" dass auf validität prüft meine ich, aber was ist checkf() ???


    Vielen Dank Leutz.

    hallo Community,

    ich sehe oft zum Beispiel vom Sinn her diese beiden if-Abfragen:


    //"EquippedWeapon" ist hier ein Pointer, wenn also der Char eine Waffe in der Hand hat, dann kann gefeuert werden.


    if (EquippedWeapon)

    {

    FireWeapon();

    }


    //oder ich sehe auch das hier:


    if (EquippedWeapon == nullptr) return;


    FireWeapon();


    //beim zweiten if wird also gefragt, Wenn der Pointer ein Nullpointer ist, also leer ist, dann gib leere Funktion zurück, also lies nicht weiter.

    //Meine Frage nun, gibt es irgendeinen Grund warum es diese beiden unterschiedlichen Abfragen gibt? Eigentlich wollen doch beide auf das Gleiche hinaus. Warum vom Gedanken her einmal so und einmal so? Gibt es dort überhaupt einen Unterschied?

    danke @freezernick, gibt es irgendeinen Unterschied zu diesen drei Methoden zu initialisieren?

    ich habe bei meinem Beispiel was vergessen, hier nochmal das genaue neue Initialisieren mit einem Integer diesmal. Meine Frage ist, ob es egal ist welche Methode ich verwende?


    in.h


    int32 ItemAnzahl;


    in.cpp


    AItem::AItem() : //das ist der Constructor-Name

    ItemAnzahl(0)

    {

    }


    merkwürdig finde ich, dass dies vor den Klammern des Constructor-Körpers passiert und ohne Semikolon, aber es klappt. Was soll das, warum sollte jemand so initialisieren? Hat das eine Bedeutung?

    Hi liebe UE4 Kompagnons,


    ich lerne mit Udemy Kursen und sehe das hier:

    ```bAiming(false);``` im Constructor der CharacterKlasse, diese bool-Variable soll dort initialisiert werden. In anderen Worten, die Variable soll hier ihren Anfangswert bekommen, hier "false".

    Bisher kannte ich nur diese Schreibweise ```bAiming = false;```

    Gibt es einen Unterschied bei den Schreibweisen? Tun die Schreibweisen nicht das Gleiche? Was macht die erste Schreibweise evtl anders?

    hi Leute, bin neu mit Visual Studio, lerne an Udemy Kursen.

    Was mir immer und immer wieder passiert und ich nicht verstehe, es auch schon richtig nervt, ist:

    ich tippe die gesuchte Funktion, der Assist schlägt mir eine Reihe von möglichen Funktionen vor, ich wähle mit den Pfeiltasten die gewünschte Funktion aus und drücke Enter.

    In den meisten Fällen schreibt der Assist diese Funktion nun auch auf, aber auch oft, tut er es auch einfach nicht, obwohl ich es genau so tue, wie beschrieben, manchmal schreibt der Assist das gewählte nieder, manchmal aber auch nicht.


    Ich verstehe es einfach nicht, warum es manchmal klappt, manchmal nicht. Ich muss das ganze dann einfach wiederholen, dann geht es wieder.

    Kennt das einer? Der Assist zeigt mir in allen Fällen die möglichen Funktionen, aber nicht immer schreibt er das gewählte auch nieder, warum?

    Oft redet man im englischen aneinander vorbei.

    Folgende Verständnisfrage:


    Bisher dachte ich immer, ich setze Variablen, die einen Wert inne haben in eine Funktion als Eingangsparameter ein (also in die Klammer einer Funktion).

    Die Funktion arbeitet mit den Parametern und gibt am Ausgang (links von der Funktion) das Ergebnis heraus, das ich weiterverwenden kann für andere Sachen.


    Nun sehe ich diesen Code:```

    FVector2D ViewportSize;

    if (GEngine && GEngine->GameViewport)

    {

    GEngine->GameViewport->GetViewportSize(ViewportSize);

    }```

    Jetzt bin ich verwirrt, "ViewportSize" wird erstellt, hat aber noch keinen Wert, was bringt es dann, dies in die Funktion einzusetzen? Was soll dann dabei rauskommen, es ist ja leer. Dazu kommt noch, die Funktion wird lediglich aufgerufen, aber am "Ausgang" wird garkein Wert zurückgegeben bzw garnicht entgegengenommen.


    Es scheint so, als würde "ViewportSize" auch durch einsetzen in den Eingang einer Funktion einen Wert zugewiesen bekommen, stimmt das?

    Bisher kannte ich Werte zuweisen nur durch das "=" Zeichen.


    Bitte kann mir da einer Licht in mein Dunkel bringen^^?

    Stephan

    Cast klappt, hier der Code: Der Pointer "EnemyCharacter" ist in der "F_Taste" Funktion NULL, obwohl er erfolgreich in "BeginOverlap" gesetzt wurde.


    ```

    in .h

    UPROPERTY()

    AMyCharacter* EnemyCharacter;

    ```


    ```

    in .cpp

    void AMyCharacter::BeginBoxOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult) {

    if (OtherActor != this)
    {   

    AMyCharacter* MeChar = Cast<AMyCharacter>(OtherActor);

    if (MeChar)       

    { EnemyCharacter = MeChar;

    UE_LOG(LogTemp, Warning, TEXT("drin"));

    UE_LOG(LogTemp, Error, TEXT(" %s"), *AActor::GetDebugName(EnemyCharacter));

    }

    }
    }


    void AMyCharacter::F_Taste()
    {

    UE_LOG(LogTemp, Warning, TEXT("FTaste gedrückt"));

    UE_LOG(LogTemp, Error, TEXT(" %s"), *AActor::GetDebugName(EnemyCharacter));

    if (FinisherMontage)

    {

    if (EnemyCharacter)

    {

    PlayAnimMontage(FinisherMontage, 1.f, FName("Start"));
    EnemyCharacter->PlayAnimMontage(FinisherMontage, 1.f, FName("KO"

    }

    }

    }

    Es scheint so, dass er nicht in diese If Abfrage reinkommt, ich nehme an, EnemyCharacter wird nicht gefüllt, verstehe aber nicht warum. Also es lässt sich kompilieren, aber in dieser If Abfrage komme ich nicht hinein, bzw. von da aus bekomme ich auch kein UE_Log aufgerufen.


    Code
    if (EnemyCharacter)    {    EnemyCharacter->PlayAnimMontage(FinisherMontage, 1.f, FName("KO"));

    @Stephan ich hab nun versucht die Variable zu speichern, geht trotzdem nicht, hier der Code, hab kein Plan was ich nicht verstehe.


    in .h

    UPROPERTY()
    AMyCharacter* EnemyCharacter;

    in .cpp

    void AMyCharacter::BeginBoxOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)

    {

    }

    void AMyCharacter::F_Taste()

    {

    Code
    if (FinisherMontage)
    
    {    if (EnemyCharacter)
        {
        EnemyCharacter->PlayAnimMontage(FinisherMontage, 1.f, FName("KO"));
        }
    
    }

    }