Bug with inherited Actor collisions

The setup I currently have is a empty Actor blueprint called “A”, with nothing inside. I then use my existing “Bomb” Actor blueprint and now set its parent to “A”. Now when I spawn my bombs, they fall through the terrain, which worked perfectly fine before inheriting the “A” blueprint. I didn’t change any of the collisions yet it no longer works. It could be something to do with the “DefaultSceneRoot” which is inherited into “Bomb” from “A”.

You say you didnt change anything but did you look to see if anything changed? Any defaults would be updated to new defaults.

Hi hardballs,

As RimmyD stated earlier, please check to see if the defaults of parent A are different than the original parent.

Sorry for the delay. The defaults are the same. So just to make sure we are on the same page.

Initially, I had:
Actor ← Bomb (that is, a blueprint of the Actor type). It has essentially the same setup as the BPBomb blueprint in the UE4 official networking tutorial.
I then created another Actor Blueprint called Item, and set replicates to true, just like in the Bomb blueprint. I then changed the setup to:
Actor ← Item ← Bomb I double checked that the inherited class defaults were the same as before in the Bomb BP and they are.

The only thing I can see interfering with the collision is the inherited “DefaultSceneRoot”, which I did not have in my Bomb BP before. My top level Sphere component attached to the Bomb BP now changed to be attached to this inherited “DefaultSceneRoot”, which was not the case before. I attached some images to show this, look at the Top left component panel.

Can you show me the setups you had for your initial parent as well as parent A?

I think I might have figured out why Bombs are falling through the world. The mechanism I am using for making them collide with the cube mesh that is currently my floor, is the “Should Bounce” boolean inside the Projectile Movement Component associated to my Bomb blueprint. I just tested it with a fresh Third Person Project and did this:

  • Create an Actor blueprint, call it Bomb.
  • Add a Sphere Component.
  • Add a Projectile Movement Component.
  • Set the Projectile Movement “Should Bounce” field to true.
  • Place one of these Bomb actors into the world and notice that it will collide with the floor mesh and bounce.
  • Create a new Actor blueprint, call it Item. Don’t change anything inside it.
  • Change the Parent of Bomb to Item (instead of Actor).
  • Run the game and notice that the Bomb actor will now fall through the world.

My intuition is that the projectile movement doesn’t get attached to the Sphere component when this type of inheritance is in place. Why? if you take a look at the images I added in the previous comment, you can see that with inheritance the Sphere component gets attached to the DefaultSceneRoot inherited from the Item Parent, whereas the ProjectileMovement component stays a top level component. Though this might just be a graphical bug, I don’t know, I’m still new to this.

Hi hardballs,

Ah that makes sense! The reason it doesn’t get attached is because the projectile movement component acts as a component on the entire blueprint as opposed to an individual portion and cannot be parented to another component. If the component was not added to the child and instead was in the parent and the other parent did not have a projectile movement component or different specs within their projectile component, it will alter the child accordingly as it is losing access to those components until told otherwise (i.e: adding the component to the new parent or directly to the child blueprint).

Your final sentence is confusing. Isn’t this a bug? Even if I put the Projectile Movement component in my “Item” blueprint and remove the Projectile Movement component from my Bomb blueprint in the following hierarchy Actor ← Item ← Bomb, the sphere component of the Bomb blueprint still doesn’t get affected by the Projectile Movement component inherited from the Item BP. I am not sure what other parent you are referring to. In either situation you describe it does not work, unless I am missing something… Have you tried what I described in one of my comments and confirm that it works?

Hi hardballs,

I attempted it on my end but I had clearly misunderstood what you were describing. While I did not get the projectile error per se, I did find an error in which reparenting an actor blueprint completely removed all components of the blueprint, even if the new parent was an empty actor blueprint. I have entered a bug report, UE-17070 to be assessed by the development staff.

Thanks for looking into it .

Just to add to this, my issue described also doesn’t work if you put the projectile movement component in the parent class and then inherit from it (never gets applied to the actual mesh of the child).

I think it may be the “should bounce” field that is having issues being inherited.

I have a solution.
I followed the tutorial but I have 4.9 engine so the components are showing differently. All I did is move the Sphere into the root. This will replace the default scene root with the Sphere collision component. This way the projectile bounce works.

Before:

63554-b1.png

After:

63555-b2.png

This solved my problem also! (UE 4.26)