SetElementCollisionsEnabled: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
(13 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Client function}}  
{{Server client function}}  
__NOTOC__  
__NOTOC__  
This function can disable or enable an element's collisions. An element without collisions does not interact with the physical environment and remains static.<br>
This function can disable or enable an element's collisions. An element without collisions does not interact with the physical environment and remains static.
'''Note:''' This function has unwanted effects on vehicles with drivers at the moment.  
 
{{Note|Vehicles that are collisionless and have a driver will cause bugs.}}
{{Note|Enabling a players collisions when they're inside a vehicle will cause bugs.}}
{{Note|Disabling a peds collisions will cause some problems, such as it being unable to move or wrong rotation after creation.}}


==Syntax==  
==Syntax==  
Line 8: Line 11:
bool setElementCollisionsEnabled ( element theElement, bool enabled )  
bool setElementCollisionsEnabled ( element theElement, bool enabled )  
</syntaxhighlight>  
</syntaxhighlight>  
{{OOP||[[element]]:setCollisionsEnabled|collisions|getElementCollisionsEnabled}}


===Required Arguments===  
===Required Arguments===  
Line 18: Line 22:
==Example==  
==Example==  
This example disables collisions for all vehicles within a certain radius of a player:
This example disables collisions for all vehicles within a certain radius of a player:
<section name="Client" class="client" show="true">
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function disableVehicleCollisionsNearPlayer(thePlayer, maxDistance)
function disableVehicleCollisionsNearPlayer(thePlayer, maxDistance)
Line 26: Line 29:
local vehicleX, vehicleY, vehicleZ = getElementPosition(v)
local vehicleX, vehicleY, vehicleZ = getElementPosition(v)
-- get the distance between the player and the vehicle:
-- get the distance between the player and the vehicle:
local distance = math.sqrt((vehicleX - playerX)^2 + (vehicleY - playerY)^2 + (vehicleZ - playerZ)^2)
local distance = getDistanceBetweenPoints3D(vehicleX, vehicleY, vehicleZ, playerX, playerY, playerZ)
if (distance <= maxDistance) then
if (distance <= maxDistance) then
-- disable collisions for the vehicle
-- disable collisions for the vehicle
Line 34: Line 37:
end
end
</syntaxhighlight>
</syntaxhighlight>
</section>


==See Also==
==See Also==
{{Client element functions}}
{{Client element functions}}

Latest revision as of 16:27, 20 January 2020

This function can disable or enable an element's collisions. An element without collisions does not interact with the physical environment and remains static.

[[{{{image}}}|link=|]] Note: Vehicles that are collisionless and have a driver will cause bugs.
[[{{{image}}}|link=|]] Note: Enabling a players collisions when they're inside a vehicle will cause bugs.
[[{{{image}}}|link=|]] Note: Disabling a peds collisions will cause some problems, such as it being unable to move or wrong rotation after creation.

Syntax

bool setElementCollisionsEnabled ( element theElement, bool enabled ) 

OOP Syntax Help! I don't understand this!

Method: element:setCollisionsEnabled(...)
Variable: .collisions
Counterpart: getElementCollisionsEnabled


Required Arguments

  • theElement: The element you wish to set the collisions of
  • enabled: A boolean to indicate whether collisions are enabled (true) or disabled (false)

Returns

Returns true if the collisions were set succesfully, false otherwise.

Example

This example disables collisions for all vehicles within a certain radius of a player:

function disableVehicleCollisionsNearPlayer(thePlayer, maxDistance)
	local playerX, playerY, playerZ = getElementPosition(thePlayer)
	local vehicles = getElementsByType("vehicle")
	for k,v in ipairs(vehicles) do
		local vehicleX, vehicleY, vehicleZ = getElementPosition(v)
		-- get the distance between the player and the vehicle:
		local distance = getDistanceBetweenPoints3D(vehicleX, vehicleY, vehicleZ, playerX, playerY, playerZ)
		if (distance <= maxDistance) then
			-- disable collisions for the vehicle
			setElementCollisionsEnabled(v, false)
		end
	end
end

See Also