六一的部落格


关关难过关关过,前路漫漫亦灿灿。




概览

  • 击中游戏角色时, 对其造成伤害
  • 在代码中设置Capsule组件的碰撞反馈

搭建框架: 轨迹计算发生碰撞时, 调用MakeDamage, 传入碰撞信息

C++

  1. ShootThemUp: Weapon/STUBaseWeapon.h

    protected
    1void MakeDamage(const FHitResult& HitResult);
  2. ShootThemUp: Weapon/STUBaseWeapon.cpp
    1void ASTUBaseWeapon::MakeDamage(const FHitResult& HitResult) {}
  3. 在MakeShot中调用MakeDamage

    ShootThemUp: Weapon/STUBaseWeapon.cpp

实现MakeDamage


添加数据成员: 固定伤害值

protected

ShootThemUp: Weapon/STUBaseWeapon.h

1UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
2float DamageAmount = 10.0f;

获取碰撞Actor, 对其造成伤害

ShootThemUp: Weapon/STUBaseWeapon.cpp

1const auto DamagedActor = HitResult.GetActor();
2if (!DamagedActor) return;
3
4DamagedActor->TakeDamage(DamageAmount, FDamageEvent(), GetPlayerController(), this);

查看

虚幻编辑器

  1. 对游戏角色造成射击伤害


  2. 游戏角色死亡



游戏角色死亡后播放死亡动画倒地, 其销毁前, Capsule组件成为障碍物

虚幻编辑器

  1. 运行时显示Capsule组件

    show collision     
  2. 游戏角色死亡, 无法穿过竖立着的Capsule组件



游戏角色死亡后, 设置所有碰撞通道忽略Capsule组件

C++

ShootThemUp: Player/STUBaseCharacter.cpp

1#include "Components/CapsuleComponent.h"
2
3// OnDeath
4GetCapsuleComponent()->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); // 对所有channel的碰撞反馈统一进行设置

游戏角色死亡后, 武器还在

虚幻编辑器


射击伤害



概览

  • 击中游戏角色时, 对其造成伤害
  • 在代码中设置Capsule组件的碰撞反馈

搭建框架: 轨迹计算发生碰撞时, 调用MakeDamage, 传入碰撞信息

C++

  1. ShootThemUp: Weapon/STUBaseWeapon.h

    protected
    1void MakeDamage(const FHitResult& HitResult);
  2. ShootThemUp: Weapon/STUBaseWeapon.cpp
    1void ASTUBaseWeapon::MakeDamage(const FHitResult& HitResult) {}
  3. 在MakeShot中调用MakeDamage

    ShootThemUp: Weapon/STUBaseWeapon.cpp

实现MakeDamage


添加数据成员: 固定伤害值

protected

ShootThemUp: Weapon/STUBaseWeapon.h

1UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
2float DamageAmount = 10.0f;

获取碰撞Actor, 对其造成伤害

ShootThemUp: Weapon/STUBaseWeapon.cpp

1const auto DamagedActor = HitResult.GetActor();
2if (!DamagedActor) return;
3
4DamagedActor->TakeDamage(DamageAmount, FDamageEvent(), GetPlayerController(), this);

查看

虚幻编辑器

  1. 对游戏角色造成射击伤害


  2. 游戏角色死亡



游戏角色死亡后播放死亡动画倒地, 其销毁前, Capsule组件成为障碍物

虚幻编辑器

  1. 运行时显示Capsule组件

    show collision     
  2. 游戏角色死亡, 无法穿过竖立着的Capsule组件



游戏角色死亡后, 设置所有碰撞通道忽略Capsule组件

C++

ShootThemUp: Player/STUBaseCharacter.cpp

1#include "Components/CapsuleComponent.h"
2
3// OnDeath
4GetCapsuleComponent()->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); // 对所有channel的碰撞反馈统一进行设置

游戏角色死亡后, 武器还在

虚幻编辑器