Hallo Leute,
Ich habe vor mit der UE / C++ Programmierung anzufangen und bin schon bei Klassen und Funktionsaufrufen gescheitert.
Ich habe ein C++ Tutorialreihe angefangen, und bisher mit Code Blocks keine Probleme gehabt.
Jedoch wenn ich nun versuche das gelernte bei UE anzuwenden, komm ich nicht mehr weiter.
Die Idee dahinter ist folgendes:
Ich habe ein FirstPerson - Projekt angefangen und mit einem tutorial herausgefunden, wie man mit Raycasts arbeitet.. soweit so gut.
Nun habe ich ein Actor 'EnemyActor', der eine Funktion "ApplyDamage" beinhaltet.
Diese Funktion, soll von der Character Klasse aufgerufen werden, wobei das übrig gebliebene Leben angezeigt wird.
Mit meiner Lösung zeigt mir das Programm keine Fehler an, aber sobald ich das Raycast aktiviere stürzt UE ab und wird von neu gestartet.
MyRayCastProjectCharacter.cpp
void AMyRaycastProjectCharacter::PerformRaycast()
{
AEnemyActor EActor;
FHitResult* HitResult = new FHitResult;
FVector StartTrace = FirstPersonCameraComponent->GetComponentLocation();
FVector ForwardVector = FirstPersonCameraComponent->GetForwardVector();
FVector EndTrace = ((ForwardVector * 5000.0f) + StartTrace);
FCollisionQueryParams* TraceParams = new FCollisionQueryParams;
if (GetWorld()->LineTraceSingleByChannel(*HitResult, StartTrace, EndTrace, ECC_Visibility, *TraceParams))
{
DrawDebugLine(GetWorld(), StartTrace, EndTrace, FColor(255, 0, 0), true);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("You Hit: %s"), *HitResult->Actor->GetName()));
EActor.ApplyDamage();
}
}
Alles anzeigen
EnemyActor.cpp
void AEnemyActor::ApplyDamage()
{
health -= 10;
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Applied Damage.. %d Health left"), health));
}
//Edit: die Variable health ist private. Die Funktion ApplyDamage ist public.
Die Funktion PerformRaycast wird über 'InputComponent' aufgerufen und funktionert auch. Es stürzt aber ab, sobald ich versuche 'ApplyDamage' aufzurufen.
Ich hoffe ihr könnt mir da weiterhelfen.
Offtopic:
1. Es stört mich ein wenig, dass gefühlt 90% der Tutorials und ähnliches über UE, auf Blueprints basieren. Ich programmiere sehr gerne, und will daher nur ungern drauf verzichten. Kennt ihr ne Seite/ Seiten, was mir weiterhelfen könnte?
2. Ich hab nicht mehr den neusten PC, und vom Starten des Epic Games Launchers bis zum bearbeiten des ersten Codes, wenn ich ein neues C++ Projekt starte, vergehen zum Teil 20-30 Minuten. Ist das normal?
LG AnGaraa