IsDamageableActor vs CanBeDamaged


I am quiet confused about the damaging system

  • if I use IsDamageableActor on a character it returns true
  • but for custom made actors, I have to check the bCanBeDamaged variable


also, there appear to have yet another damage system that uses TakeDamage/ReceiveDamage instead of AnyDamage event

anybody can explain that to me ?


“Is Damageable Actor” is not a standard function. It comes from your project somehow. Looks like a custom library method.

TakeDamage is the native (c++) handler for handling damage being taken by an actor. In c++ you can call it directly but it’s probably not recommended. In blueprints it is not even visible.

Instead, you want to use the methods ApplyPointDamage or ApplyRadialDamage, available in blueprints. Under the hood, these methods will check if affected actor(s) are damageable (bCanBeDamaged = true), and call TakeDamage on them.

TakeDamage will in turn trigger the AnyDamage/PointDamage/RadialDamage events so you can handle them in blueprints. “ReceiveDamage” doesn’t exist in itself, but it refers to these three events you can implement in blueprints.

1 Like
  • stupid of me… I wish there was a way to diffferentiate my functions, I got zillions of them, I loose track after a while :slight_smile:

  • ok I see now, thanks for the detailed explanations !