Partage de technologie

Jeu de tir à la troisième personne UEC Unreal 5 (2)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

UEC++ Unreal 5, jeu de tir à la troisième personne (2)

Armes à grenade dérivées

  • Créez-en un nouveau hérité deWeaponsous-classe en tant qu'arme à grenade dérivée
    Insérer la description de l'image ici
  • VolontéWeaponen classeFireAjout de fonctionsvirtualLe mot-clé devient une fonction virtuelle afin que la classe grenade puisse être héritée et réécrite.
    Insérer la description de l'image ici
  • existerProjectileWeaponréécriture moyenneFireFonction, crée une nouvelle variable de modèle pour générer des projectiles
    Insérer la description de l'image ici
  • FireLogique de réécriture de fonction
    Insérer la description de l'image ici
  • code
	//生成的投射物
	UPROPERTY(EditAnywhere,BlueprintReadOnly,Category = "ProjectileWeapon")
	TSubclassOf<AActor> ProjectileClass;
//--------------------------------------------------------------------------------------------------
void AProjectileWeapon::Fire()
{
   
	AActor* MyOwner = GetOwner();
	if (MyOwner)
	{
   
		FVector EyeLocation;
		FRotator EyeRotation;
		MyOwner->GetActorEyesViewPoint(EyeLocation, EyeRotation);

		FActorSpawnParameters SpawnParams;
		//设置投射物生成参数:即使生成位置有碰撞,也要强行生成投射物,不进行碰撞检测处理
		SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
		//获取枪口位置
		FVector MuzzleLocation = SkeletalComponent->GetSocketLocation(MuzzleSocketName);
		//生成并发射投射物
		GetWorld()->SpawnActor<AActor>(ProjectileClass, MuzzleLocation, EyeRotation, SpawnParams);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

Armes dérivées de type grenade

  • Créez un plan de la classe de grenade dérivée et ajoutez-y le modèle de maillage
    Insérer la description de l'image ici
  • Changez le nom de l'emplacement dans le modèle de grille pour nousC++nom défini dans
    Insérer la description de l'image ici
  • CréerActor Le plan est utilisé comme une balle, et un lanceur et un maillage de sphère sont ajoutés. La vitesse initiale et la vitesse maximale du lanceur sont réglées sur 2000, et l'effet de rebond du projectile est activé. Le maillage sphérique permet la simulation physique.
    Insérer la description de l'image ici
    Insérer la description de l'image ici
  • Ajout du plan d'arme à grenade pour générer des projectiles qui exposent les balles d'apparition dans le plan.
    Insérer la description de l'image ici
  • Dans le plan du personnage, remplacez le type d'arme de l'instance par une arme d'obusier, puis remplacez l'objet de l'instance par l'arme de la classe parent. Cela nous permettra de tester plus facilement le problème lors de l'appel de la fonction.
    Insérer la description de l'image ici
  • Ajoutez un événement d'explosion dans le plan de balle et écrivez la logique
    Insérer la description de l'image ici
  • existerBeginPlayL'événement logique est appelé à
    Insérer la description de l'image ici
  • résultat de l'opération
    Veuillez ajouter une description de l'image

Effet d'augmentation du zoom du tireur d'élite

  • Créez quatre nouvelles variables dans la classe de caractères, une est utilisée pour activer l'avancement du zoom, une est utilisée pour représenter le champ de vision du zoom, une est utilisée pour obtenir le champ de vision par défaut et une représente le taux d'interpolation linéaire vers un nouveau perspective.
    Insérer la description de l'image ici
  • Créer une nouvelle entrée d'opération par clic droit
    Insérer la description de l'image ici
  • Créer une nouvelle fonction de traitement pour les opérations par clic droit
    Insérer la description de l'image ici
  • Attribuer un nouvel angle de mouvement et un taux pour l'interpolation du mouvement
    Insérer la description de l'image ici
  • existerBeginPlayObtenez la plage d'angle de vue par défaut dans
    Insérer la description de l'image ici
  • Cliquez avec le bouton droit sur la logique de fonction de liaison et définissez une nouvelle logique de plage d'interpolation linéaire de perspective.
    Insérer la description de l'image ici
  • Lier les opérations d'entrée
    Insérer la description de l'image ici
  • Créez une nouvelle entrée d'opération dans le moteur et ajoutez-la au mappage
    Insérer la description de l'image ici
    Insérer la description de l'image ici
  • Lier les opérations au plan du personnage
    Insérer la description de l'image ici
  • résultat de l'opération
    Veuillez ajouter une description de l'image

Créer des variables de console

  • Créez une nouvelle variable statique dans la classe d'armes en tant que variable de console de contrôle pour contrôler s'il faut tirer et tracer des lignes, et créez une nouvelle classe de variables de console de gestion automatique.
    Insérer la description de l'image ici
  • FAutoConsoleVariableRef : Une classe pour gérer automatiquement les variables de la console
FAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT