summaryrefslogtreecommitdiff
path: root/doc/classes/PhysicsDirectSpaceState2D.xml
blob: b6f95305ed8ea3a35ca0d1c81679c1603445644b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsDirectSpaceState2D" inherits="Object" version="4.0">
	<brief_description>
		Direct access object to a space in the [PhysicsServer2D].
	</brief_description>
	<description>
		Direct access object to a space in the [PhysicsServer2D]. It's used mainly to do queries against objects and areas residing in a given space.
	</description>
	<tutorials>
		<link title="Ray-Casting">https://docs.godotengine.org/en/latest/tutorials/physics/ray-casting.html</link>
	</tutorials>
	<methods>
		<method name="cast_motion">
			<return type="Array">
			</return>
			<argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
			</argument>
			<description>
				Checks how far a [Shape2D] can move without colliding. All the parameters for the query, including the shape and the motion, are supplied through a [PhysicsShapeQueryParameters2D] object.
				Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [code][1.0, 1.0][/code] will be returned.
				[b]Note:[/b] Any [Shape2D]s that the shape is already colliding with e.g. inside of, will be ignored. Use [method collide_shape] to determine the [Shape2D]s that the shape is already colliding with.
			</description>
		</method>
		<method name="collide_shape">
			<return type="Array">
			</return>
			<argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
			</argument>
			<argument index="1" name="max_results" type="int" default="32">
			</argument>
			<description>
				Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time.
			</description>
		</method>
		<method name="get_rest_info">
			<return type="Dictionary">
			</return>
			<argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
			</argument>
			<description>
				Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. If it collides with more than one shape, the nearest one is selected. If the shape did not intersect anything, then an empty dictionary is returned instead.
				[b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The returned object is a dictionary containing the following fields:
				[code]collider_id[/code]: The colliding object's ID.
				[code]linear_velocity[/code]: The colliding object's velocity [Vector2]. If the object is an [Area2D], the result is [code](0, 0)[/code].
				[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data].
				[code]normal[/code]: The object's surface normal at the intersection point.
				[code]point[/code]: The intersection point.
				[code]rid[/code]: The intersecting object's [RID].
				[code]shape[/code]: The shape index of the colliding shape.
			</description>
		</method>
		<method name="intersect_point">
			<return type="Array">
			</return>
			<argument index="0" name="point" type="Vector2">
			</argument>
			<argument index="1" name="max_results" type="int" default="32">
			</argument>
			<argument index="2" name="exclude" type="Array" default="[  ]">
			</argument>
			<argument index="3" name="collision_layer" type="int" default="2147483647">
			</argument>
			<argument index="4" name="collide_with_bodies" type="bool" default="true">
			</argument>
			<argument index="5" name="collide_with_areas" type="bool" default="false">
			</argument>
			<description>
				Checks whether a point is inside any solid shape. The shapes the point is inside of are returned in an array containing dictionaries with the following fields:
				[code]collider[/code]: The colliding object.
				[code]collider_id[/code]: The colliding object's ID.
				[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data].
				[code]rid[/code]: The intersecting object's [RID].
				[code]shape[/code]: The shape index of the colliding shape.
				Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively.
				[b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in [code]Segments[/code] build mode are not solid shapes. Therefore, they will not be detected.
			</description>
		</method>
		<method name="intersect_point_on_canvas">
			<return type="Array">
			</return>
			<argument index="0" name="point" type="Vector2">
			</argument>
			<argument index="1" name="canvas_instance_id" type="int">
			</argument>
			<argument index="2" name="max_results" type="int" default="32">
			</argument>
			<argument index="3" name="exclude" type="Array" default="[  ]">
			</argument>
			<argument index="4" name="collision_layer" type="int" default="2147483647">
			</argument>
			<argument index="5" name="collide_with_bodies" type="bool" default="true">
			</argument>
			<argument index="6" name="collide_with_areas" type="bool" default="false">
			</argument>
			<description>
			</description>
		</method>
		<method name="intersect_ray">
			<return type="Dictionary">
			</return>
			<argument index="0" name="from" type="Vector2">
			</argument>
			<argument index="1" name="to" type="Vector2">
			</argument>
			<argument index="2" name="exclude" type="Array" default="[  ]">
			</argument>
			<argument index="3" name="collision_layer" type="int" default="2147483647">
			</argument>
			<argument index="4" name="collide_with_bodies" type="bool" default="true">
			</argument>
			<argument index="5" name="collide_with_areas" type="bool" default="false">
			</argument>
			<description>
				Intersects a ray in a given space. The returned object is a dictionary with the following fields:
				[code]collider[/code]: The colliding object.
				[code]collider_id[/code]: The colliding object's ID.
				[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data].
				[code]normal[/code]: The object's surface normal at the intersection point.
				[code]position[/code]: The intersection point.
				[code]rid[/code]: The intersecting object's [RID].
				[code]shape[/code]: The shape index of the colliding shape.
				If the ray did not intersect anything, then an empty dictionary is returned instead.
				Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to check in, or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively.
			</description>
		</method>
		<method name="intersect_shape">
			<return type="Array">
			</return>
			<argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
			</argument>
			<argument index="1" name="max_results" type="int" default="32">
			</argument>
			<description>
				Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space.
				[b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The intersected shapes are returned in an array containing dictionaries with the following fields:
				[code]collider[/code]: The colliding object.
				[code]collider_id[/code]: The colliding object's ID.
				[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data].
				[code]rid[/code]: The intersecting object's [RID].
				[code]shape[/code]: The shape index of the colliding shape.
				The number of intersections can be limited with the [code]max_results[/code] parameter, to reduce the processing time.
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>