I love the smell of UnrealEd crashing in the morning. – tarquin
The difference between Blocking and Colliding is that Colliding actors only get a Touch() event when another object collides with it; Blocking actors also prevent the other object from moving to that location. Actors can be made to do none, either, or both.
- bool bAutoAlignToTerrain
- Auto-align to terrain in the editor.
- bool bBlockActors
- Blocks other actors that also have bBlockActors set. The two actors will not be permitted to occupy the same space, and if the location of one is changed such that it would overlap with another blocking actor, the first (the one that just moved) will be moved to the nearest valid location by the engine. This defaults to false.
- bool bBlockKarma
- Blocks actors being simulated with Karma. Unlike bBlockActors, an actor does not need bBlockKarma to be blocked by a Karma object, it only needs to have bBlockActors set. If bBlockKarma is also set, Karma objects will be blocked by this actor. This defaults to false.
- bool bBlockPlayers
- The name of this variable is a bit misleading, as Players aren't actors and can't move. What this actually refers to is Pawns: bots, human players, and monsters. Pawns are exempted from colliding under bBlockActors and use this value instead. This allows for some objects that do not block pawns, but do block normal actors. (or vice versa, though the value of that is questionable) NOTE: In UT2004, this property is not used and setting it does absolutely nothing.
- bool bCollideWorld
- This variable name is a bit miseleading, as although the variable name says collide instead of block, this is actually the equivalent of bBlockActors for actors with bWorldGeometry (hidden variable) set to true. Like controllers, actors with bWorldGeometry set to true are exempt from collision under the normal bBlockAlayers conditions and instead block things that have bCollideWorld set to true. This value defaults to false.
- bool bCollideActors
- Collides with other actors. This will generate a Touch event between two actors that collide with each other, if they both have bCollideActors set. An example of a colliding, but non-blocking object would be a projectile or a trigger. They know when they touch something, but do not natively interfere with it. This value defaults to false.
- bool PathColliding
- Set this to True to consider the Actor for blocking bot paths during rebuilding. This has no effect on Actors with bStatic set to True, as those are non-moving world geometry that will always block paths.
- bool bBlockNonZeroExtentTraces
- Traces with a non-zero extent can hit this actor. If it is false, some traces may not hit this actor. Projectiles are usually zero-extent traces, so they will likely still hit this actor. If this is true, traces with non-zero extents will NOT hit this actor. This value defaults to false. Some Pawns use non-zero extent traces. See also the Trace function on Actor/Methods.
- bool bBlockZeroExtentTraces
- Traces with zero extents can hit this actor, if set to true. Traces with zero extents are usually traces where the extent parameter is omitted, though a value of 0,0,0 in that parameter is also a zero extent trace. If it is false, traces with zero extents cannot hit this actor and will pass right though it. It defaults to false. In UT2003 and UT2004, projectiles use zero-extent traces to determine their exact impact location. Instant hit weapons such as the shock rifle or assault rifle also use zero-extent traces. See also the Trace function on Actor/Methods. Note that traces will only hit this actor if either bBlockActors or bProjTarget is true (thanks to Mysterial for that info)
- bool bProjTarget
- Projectiles should potentially target this actor.
- bool bUseCylinderCollision
- If this value is true, this actor will use a collision cylinder, set the size with the next two properties. Note that depending on other parameters, the effectiveness of this variable may vary. For instance, Karma simulated actors will not use a simple cylinder collision regardless of this value. Some actors will use a cylinder collision regardless of this value as well. It may pertain only to the skeletal mesh collision hulls availible in the UnrealEngine2 Runtime and later builds.
- float CollisionHeight
- Half of the height of the collision cylinder. Note that the collision cylinder is always "upright" and does not follow the rotation of the actor.
- float CollisionRadius
- Radius of the collision cylinder. Note that the collision cylinder is always "upright" and does not follow the rotation of the actor.
- ESurfaceTypes SurfaceType
To control collision of an actor with...
- Players, Bots and Monster
- bBlockNonZeroExtentTraces. Setting this to false will allow players to walk through a mesh.
- Weapons Fire
- bBlockZeroExtentTraces. Setting this to false will allow all weapons fire to travel through a mesh. Additionally, this setting will allow Light to travel through a mesh. Lights with bCorona set to true will still be blocked though.
- Karma Bodies
- bBlockKarma. This setting depends on the mesh itself having a Karma collision hull.
- particles from a ParticleEmitter with Collision->UseCollision set
- Answer Needed!
- to block players only in UT2004
- After doing the following, this volume will allow shooting and translocators but not the player. (Don't know about other pawns (bots, invasion monsters), but i would assume it will block them as well.)
- Blocking Volume > bClassBlocker = True
- Blocking Volume > BlockedClasses > Add > Pawn which will add Class'Engine.Pawn' to the BlockedClasses list.
- OCD – Technical lowdown of object collision detection.
- Actor Overview – More on working with Actors, adding actors to a map and setting properties.
King Mango Still trying to figure out how to block ONLY players. Shock secondary is a NonZeroExtent trace and is therefore blocked along with players if bBlockNonZeroExtent is true. Class blocker seems to be broken. Have not gotten it to work in several dozen different values for the class.
monsto added the UT2004 players only block. If a mod sees it, it could use some formatting. . .
AJRAD: Does anyone know how to assign collisionheight and collisionradius of an actor in a script?
EricBlade: Well, if you ever look back here, it's "SetCollisionSize".
AJRAD: Thank you. I love you.