disableCollisionWith: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 15: Line 15:
If one or both objects change locality, the command needs to be executed again on the new [[owner]]'s machine(s) to maintain the effect.}}
If one or both objects change locality, the command needs to be executed again on the new [[owner]]'s machine(s) to maintain the effect.}}


{{Feature|Warning|Each object can have only 1 reference to the object it disabled collision with. But changing the disabled collision object does not re-enable collision with previous object. As long as one of the two objects involved in collision has disabled collision with the other, collision will be ignored.}}
{{Feature|Warning|Each object can only reference 1 other object for disabled collision. In OOP languages (like C#), this would be equivalent to:
<enforce>
obj1.disableCollisionWith = obj2;
obj2.disableCollisionWith = obj1;
</enforce>
This means that an object can only be involved in only 1 '''pair''' for disabled collision. So {{hl|obj1}} can have disabled collision with {{hl|obj2, obj3, ..., objN}}. But if {{hl|objN}} wants to disable collision with another object {{hl|objM}}, it cannot have a disabled collision with {{hl|obj1}} anymore. Because {{hl|objN}} would then be involved in 2 pairs: {{hl|[obj1, objN]}} and {{hl|[objN, objM]}}.
}}
{{Feature|Informative|Try to think of this command as if it forms a two-way link between disabled objects, and keep in mind that each object can only have 1 link with another object. As long as at least a one-way link exists, collision remains disabled:
{{Feature|Informative|Try to think of this command as if it forms a two-way link between disabled objects, and keep in mind that each object can only have 1 link with another object. As long as at least a one-way link exists, collision remains disabled:
<sqf>
<sqf>

Revision as of 17:29, 29 August 2022

Hover & click on the images for description

Description

Description:
Disable collision between vehicles. This command doesn't disable collision between PhysX objects. The collision is always disabled for both objects in the arguments, i.e. vehicle1 with vehicle2 and vehicle2 with vehicle1
Command has to be executed where objects are local, and as long as they don't change locality, the effect of this command will be global.

If the two objects are not local to the same computer, then it has to be executed on both computers to achieve the desired effect.

If one or both objects change locality, the command needs to be executed again on the new owner's machine(s) to maintain the effect.
Each object can only reference 1 other object for disabled collision. In OOP languages (like C#), this would be equivalent to:

obj1.disableCollisionWith = obj2; obj2.disableCollisionWith = obj1;

This means that an object can only be involved in only 1 pair for disabled collision. So obj1 can have disabled collision with obj2, obj3, ..., objN. But if objN wants to disable collision with another object objM, it cannot have a disabled collision with obj1 anymore. Because objN would then be involved in 2 pairs: [obj1, objN] and [objN, objM].
Try to think of this command as if it forms a two-way link between disabled objects, and keep in mind that each object can only have 1 link with another object. As long as at least a one-way link exists, collision remains disabled:
// Arrows show disabled collision with _obj1 disableCollisionWith _obj2; // _obj1 <-> _obj2 _obj1 disableCollisionWith _obj3; // _obj1 <-> _obj3 and _obj2 -> _obj1. Thus _obj1 has disabled collision with _obj2 and _obj3 _obj2 disableCollisionWith _obj3; // _obj2 <-> _obj3 and _obj1 -> _obj3. Now _obj1 and _obj2 will collide, because the link was broken.
Groups:
Object Manipulation

Syntax

Syntax:
vehicle1 disableCollisionWith vehicle2
Parameters:
vehicle1: Object
vehicle2: Object
Return Value:
Nothing

Examples

Example 1:
[_veh1, _veh2] remoteExecCall ["disableCollisionWith", 0, _veh1];

Additional Information

See also:
collisionDisabledWith enableCollisionWith

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on April 4, 2015 - 12:03 (UTC)
Ranwer
disableCollisionWith is basically a script that when you apply it to an object, and your unit can go through it like a ghost. However, if you wish the object to be solid again, you may wish to use enableCollisionWith.
An example for this is:
// name of unit in editor such as player1 // name of object in editor such as barrel1 barrel1 disableCollisionWith player1; // to make the barrel solid again, do this as vice versa if you know what you are doing! barrel1 enableCollisionWith player1;
On a side note: this can come in handy a lot if you want a unit to sit on the back of a car or on top of a container
Posted on May 29, 2018 - 06:58 (UTC)
bloodwyn1756
This command does not disable the roadway LOD.