mirror of
https://github.com/godotengine/godot-docs.git
synced 2026-01-03 05:48:42 +03:00
tutorials/physics/ray-casting: Update missing v4 fixes (#6439)
This commit is contained in:
@@ -87,13 +87,13 @@ And in 3D:
|
||||
.. code-tab:: gdscript GDScript
|
||||
|
||||
func _physics_process(delta):
|
||||
var space_state = get_world().direct_space_state
|
||||
var space_state = get_world_3d().direct_space_state
|
||||
|
||||
.. code-tab:: csharp
|
||||
|
||||
public override void _PhysicsProcess(float delta)
|
||||
{
|
||||
var spaceState = GetWorld().DirectSpaceState;
|
||||
var spaceState = GetWorld3d().DirectSpaceState;
|
||||
}
|
||||
|
||||
Raycast query
|
||||
@@ -109,7 +109,8 @@ may be used. For example:
|
||||
func _physics_process(delta):
|
||||
var space_state = get_world_2d().direct_space_state
|
||||
# use global coordinates, not local to node
|
||||
var result = space_state.intersect_ray(Vector2(0, 0), Vector2(50, 100))
|
||||
var query = PhysicsRayQueryParameters2D.create(Vector2(0, 0), Vector2(50, 100))
|
||||
var result = space_state.intersect_ray(query)
|
||||
|
||||
.. code-tab:: csharp
|
||||
|
||||
@@ -117,7 +118,8 @@ may be used. For example:
|
||||
{
|
||||
var spaceState = GetWorld2d().DirectSpaceState;
|
||||
// use global coordinates, not local to node
|
||||
var result = spaceState.IntersectRay(new Vector2(), new Vector2(50, 100));
|
||||
var query = PhysicsRayQueryParameters2D.create(new Vector2(), new Vector2(50, 100));
|
||||
var result = spaceState.IntersectRay(query);
|
||||
}
|
||||
|
||||
The result is a dictionary. If the ray didn't hit anything, the dictionary will
|
||||
@@ -161,10 +163,9 @@ as shown in the following image:
|
||||
|
||||
.. image:: img/raycast_falsepositive.png
|
||||
|
||||
To avoid self-intersection, the ``intersect_ray()`` function can take an
|
||||
optional third parameter which is an array of exceptions. This is an
|
||||
example of how to use it from a CharacterBody2D or any other
|
||||
collision object node:
|
||||
To avoid self-intersection, the ``intersect_ray()`` parameters object can take an
|
||||
array of exceptions via its ``exclude`` property. This is an example of how to use it
|
||||
from a CharacterBody2D or any other collision object node:
|
||||
|
||||
.. tabs::
|
||||
.. code-tab:: gdscript GDScript
|
||||
@@ -173,7 +174,9 @@ collision object node:
|
||||
|
||||
func _physics_process(delta):
|
||||
var space_state = get_world_2d().direct_space_state
|
||||
var result = space_state.intersect_ray(global_position, enemy_position, [self])
|
||||
var query = PhysicsRayQueryParameters2D.create(global_position, enemy_position)
|
||||
query.exclude = [self]
|
||||
var result = space_state.intersect_ray(query)
|
||||
|
||||
.. code-tab:: csharp
|
||||
|
||||
@@ -182,7 +185,9 @@ collision object node:
|
||||
public override void _PhysicsProcess(float delta)
|
||||
{
|
||||
var spaceState = GetWorld2d().DirectSpaceState;
|
||||
var result = spaceState.IntersectRay(globalPosition, enemyPosition, new Godot.Collections.Array { this });
|
||||
var query = PhysicsRayQueryParameters2D.create(globalPosition, enemyPosition);
|
||||
query.Exclude = new Godot.Collections.Array { this };
|
||||
var result = spaceState.IntersectRay(query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,9 +200,9 @@ While the exceptions method works fine for excluding the parent body, it becomes
|
||||
very inconvenient if you need a large and/or dynamic list of exceptions. In
|
||||
this case, it is much more efficient to use the collision layer/mask system.
|
||||
|
||||
The optional fourth argument for ``intersect_ray()`` is a collision mask. For
|
||||
example, to use the same mask as the parent body, use the ``collision_mask``
|
||||
member variable:
|
||||
The ``intersect_ray()`` parameters object can also be supplied a collision mask.
|
||||
For example, to use the same mask as the parent body, use the ``collision_mask``
|
||||
member variable. The array of exceptions can be supplied as the last argument as well:
|
||||
|
||||
.. tabs::
|
||||
.. code-tab:: gdscript GDScript
|
||||
@@ -205,9 +210,10 @@ member variable:
|
||||
extends CharacterBody2D
|
||||
|
||||
func _physics_process(delta):
|
||||
var space_state = get_world().direct_space_state
|
||||
var result = space_state.intersect_ray(global_position, enemy_position,
|
||||
[self], collision_mask)
|
||||
var space_state = get_world_2d().direct_space_state
|
||||
var query = PhysicsRayQueryParameters2D.create(global_position, enemy_position,
|
||||
collision_mask, [self])
|
||||
var result = space_state.intersect_ray(query)
|
||||
|
||||
.. code-tab:: csharp
|
||||
|
||||
@@ -216,8 +222,9 @@ member variable:
|
||||
public override void _PhysicsProcess(float delta)
|
||||
{
|
||||
var spaceState = GetWorld2d().DirectSpaceState;
|
||||
var result = spaceState.IntersectRay(globalPosition, enemyPosition,
|
||||
new Godot.Collections.Array { this }, CollisionMask);
|
||||
var query = PhysicsRayQueryParameters2D.create(globalPosition, enemyPosition,
|
||||
CollisionMask, new Godot.Collections.Array { this });
|
||||
var result = spaceState.IntersectRay(query);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user