Compartilhamento de tecnologia

Jogo de tiro em terceira pessoa UEC Unreal 5 (2)

2024-07-12

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

UEC++ Unreal 5 jogo de tiro em terceira pessoa (2)

Armas de granadas derivadas

  • Crie um novo herdado deWeaponsubclasse como uma arma de granada derivada
    Insira a descrição da imagem aqui
  • VaiWeaponem aulaFireAdição de funçãovirtualA palavra-chave torna-se uma função virtual para que a classe granada possa ser herdada e reescrita.
    Insira a descrição da imagem aqui
  • existirProjectileWeaponreescrita médiaFireFunção, crie uma nova variável de modelo para geração de projéteis
    Insira a descrição da imagem aqui
  • FireLógica de reescrita de função
    Insira a descrição da imagem aqui
  • código
	//生成的投射物
	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

Armas derivadas semelhantes a granadas

  • Crie um projeto da classe de granada derivada e adicione o modelo de malha a ele
    Insira a descrição da imagem aqui
  • Altere o nome do slot no modelo de grade para nósC++nome definido em
    Insira a descrição da imagem aqui
  • CriarActor O projeto é usado como uma bala, e um lançador e uma malha esférica são adicionados. A velocidade inicial e a velocidade máxima do lançador são definidas para 2.000, e o efeito de rebote do projétil é ativado. A malha esférica permite simulação física.
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui
  • Adicionado o projeto da arma granada para gerar projéteis que expõem as balas geradas no projeto.
    Insira a descrição da imagem aqui
  • No projeto do personagem, altere o tipo de arma da instância para uma arma de obus e, em seguida, altere o objeto da instância para a arma da classe pai. Isso tornará mais fácil testar o problema ao chamar a função.
    Insira a descrição da imagem aqui
  • Adicione um evento de explosão no modelo do marcador e escreva a lógica
    Insira a descrição da imagem aqui
  • existirBeginPlayO evento lógico é chamado em
    Insira a descrição da imagem aqui
  • resultado da operação
    Adicione a descrição da imagem

Efeito de aumento de zoom do Sniper

  • Crie quatro novas variáveis ​​na classe de caracteres, uma é usada para permitir o avanço do zoom, uma é usada para representar o campo de visão do zoom, uma é usada para obter o campo de visão padrão e uma representa a taxa de interpolação linear para um novo perspectiva.
    Insira a descrição da imagem aqui
  • Crie uma nova entrada de operação de clique com o botão direito
    Insira a descrição da imagem aqui
  • Crie uma nova função de processamento para operações de clique com o botão direito
    Insira a descrição da imagem aqui
  • Atribua um novo ângulo de movimento e uma taxa para interpolação de movimento
    Insira a descrição da imagem aqui
  • existirBeginPlayObtenha a faixa de ângulo de visão padrão em
    Insira a descrição da imagem aqui
  • Clique com o botão direito do mouse na lógica da função de vinculação e defina a nova lógica de faixa de interpolação linear de perspectiva
    Insira a descrição da imagem aqui
  • Vincular operações de entrada
    Insira a descrição da imagem aqui
  • Crie uma nova entrada de operação no mecanismo e adicione-a ao mapeamento
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui
  • Vincular operações ao blueprint do personagem
    Insira a descrição da imagem aqui
  • resultado da operação
    Adicione a descrição da imagem

Criar variáveis ​​de console

  • Crie uma nova variável estática na classe de arma como uma variável de console de controle para controlar se deve atirar e desenhar linhas e crie uma nova classe de variável de console de gerenciamento automático
    Insira a descrição da imagem aqui
  • FAutoConsoleVariableRef: uma classe para gerenciar automaticamente variáveis ​​de console
FAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT