Download

Disable landscape collision (only for pawns in volume)

I’ve discussed this in the past but never found a working solution.

I’d like to create holes (cave entrances) in my landscape. I know there is the visibility landscape tool that does this, however once used, it then prevents being able to check layer physical material on the component I cut the whole. I’m guessing this is because it’s applying a mask layer to the material on that component, which has dominance over the other layers.

So instead I’m thinking of using an opacity layer, painting a hole, then plugging the hole with a volume which will disable landscape collision for any pawns in the volume.

Does anyone know how to disable collision (just on the landscape) only for pawns inside the volum?

Any suggestions are welcome. Cheers.

There is a collision type in Actor.uc:



COLLIDE_CustomDefault, // custom programmer set collison (PostEditChange() will restore collision to defaults when this is selected)


However I don’t see anywhere to configure this type.

Maybe you can add some code to the Touch and Block (is that what it’s called? maybe there’s others?) events of your pawn, where you detect if the other actor is a landscape actor and you immediately return, which cancels the physics interaction. Might be worth a shot.

Something like this



event Touch( Actor Other, PrimitiveComponent OtherComp, vector HitLocation, vector HitNormal )
{    
    if(LandscapeActor(Other) != none && volume_condition)
        return;


Nice idea @ciox, I’ll give that a try.

I can’t seem to get the Touch event to fire for my pawn at all.

According to the docs “Both Actor and Other must be collidable, and either Actor or Other must use non blocking collision”. Seeing as my pawn and landscape are both blocking this appears to be why.

I can set bCollideWorld=false on my pawn, but then they will pass through everything when colliding.

Any other ideas?