Compartir tecnología

UEC Unreal 5 juego de disparos en tercera persona (2)

2024-07-12

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

UEC++ Unreal 5 juego de disparos en tercera persona (2)

Armas de granadas derivadas

  • Crear uno nuevo heredado deWeaponsubclase como arma de granada derivada
    Insertar descripción de la imagen aquí
  • VoluntadWeaponen la claseFireAdición de funcionesvirtualLa palabra clave se convierte en una función virtual para que la clase de granada pueda heredarse y reescribirse.
    Insertar descripción de la imagen aquí
  • existirProjectileWeaponreescritura mediaFireFunción, crea una nueva variable de plantilla para generar proyectiles.
    Insertar descripción de la imagen aquí
  • FireLógica de reescritura de funciones
    Insertar descripción de la imagen aquí
  • 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 parecidas a granadas

  • Cree un plano de la clase de granada derivada y agréguele el modelo de malla.
    Insertar descripción de la imagen aquí
  • Cámbianos el nombre de la ranura en el modelo de cuadrícula.C++nombre definido en
    Insertar descripción de la imagen aquí
  • CrearActor El plano se usa como una bala y se agregan un lanzador y una malla de esfera. La velocidad inicial y la velocidad máxima del lanzador se establecen en 2000 y el efecto de rebote del proyectil está activado. La malla esférica permite la simulación física.
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
  • Se agregó el plano del arma de granadas para generar proyectiles que exponen las balas de generación en el plano.
    Insertar descripción de la imagen aquí
  • En el plano del personaje, cambie el tipo de arma de la instancia a un arma de obús y luego cambie el objeto de la instancia a un arma de clase principal. Esto nos facilitará probar el problema al llamar a la función.
    Insertar descripción de la imagen aquí
  • Agregue un evento de explosión en el plano de la viñeta y escriba la lógica.
    Insertar descripción de la imagen aquí
  • existirBeginPlayEl evento lógico se llama en
    Insertar descripción de la imagen aquí
  • resultado de la operación
    Por favor agregue la descripción de la imagen.

Efecto de aumento de zoom del francotirador

  • Cree cuatro nuevas variables en la clase de caracteres, una se usa para habilitar el avance del zoom, otra se usa para representar el campo de visión del zoom, otra se usa para obtener el campo de visión predeterminado y la otra representa la tasa de interpolación lineal a una nueva perspectiva.
    Insertar descripción de la imagen aquí
  • Crear una nueva entrada de operación con el botón derecho
    Insertar descripción de la imagen aquí
  • Crear una nueva función de procesamiento para operaciones con el botón derecho
    Insertar descripción de la imagen aquí
  • Asignar un nuevo ángulo de movimiento y una tasa de interpolación de movimiento
    Insertar descripción de la imagen aquí
  • existirBeginPlayObtenga el rango de ángulo de visión predeterminado en
    Insertar descripción de la imagen aquí
  • Haga clic con el botón derecho en Vincular lógica de función y establezca una nueva lógica de rango de interpolación lineal de perspectiva
    Insertar descripción de la imagen aquí
  • Vincular operaciones de entrada
    Insertar descripción de la imagen aquí
  • Cree una nueva entrada de operación en el motor y agréguela al mapeo.
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
  • Vincular operaciones al plano del personaje.
    Insertar descripción de la imagen aquí
  • resultado de la operación
    Por favor agregue la descripción de la imagen.

Crear variables de consola

  • Cree una nueva variable estática en la clase de arma como variable de la consola de control para controlar si se dispara y dibuja líneas, y cree una nueva clase de variable de consola de administración automática
    Insertar descripción de la imagen aquí
  • FAutoConsoleVariableRef: una clase para administrar automáticamente variables de consola
FAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT