dimforge / dimforge/nphysics

Can't raycast static bodies

Open
#82 4 comments 0 reactions 0 assignees View on GitHub
bug P-medium
Dominant language
Rust
Stars
1.6k
Forks
120
PR merge metrics
No merged PRs in 30d

Description

Hi!

I miss something, or ray doesn't intersect static rigidbodies?

Sample code:

```
extern crate nalgebra;
extern crate ncollide;
extern crate nphysics2d;

use nphysics2d::object::RigidBody;
use nphysics2d::world::World;
use ncollide::shape::Ball;
use ncollide::world::CollisionGroups;
use ncollide::query::Ray;
use nalgebra::{Vector2, Point2, Translation2};

fn create_static_body() -> RigidBody {
RigidBody::new_static(Ball::new(100.0), 1.0, 0.3)
}

fn create_dynamic_body() -> RigidBody {
RigidBody::new_dynamic(Ball::new(100.0), 1.0, 0.3, 1.0)
}

fn main() {
// Create world
let mut physics_world = World::new();
physics_world.set_gravity(Vector2::new(0.0, 0.0));

// Create static body at left
let mut rb = create_static_body();
rb.append_translation(&Translation2::new(-1000.0, 0.0));
physics_world.add_rigid_body(rb);

// Create dynamic body at right
let mut rb = create_dynamic_body();
rb.append_translation(&Translation2::new(1000.0, 0.0));
physics_world.add_rigid_body(rb);

let all_groups = &CollisionGroups::new();

// Raycast over static body
let ray = Ray::new(Point2::new(-1000.0, 1000.0), Vector2::new(0.0, -1.0));
println!("Static: {}",
physics_world
.collision_world()
.interferences_with_ray(&ray, all_groups)
.count());

// Raycast over dynamic body
let ray = Ray::new(Point2::new(1000.0, 1000.0), Vector2::new(0.0, -1.0));
println!("Dynamic: {}",
physics_world
.collision_world()
.interferences_with_ray(&ray, all_groups)
.count());

// Raycast from left to right over static and dynamic bodies
let ray = Ray::new(Point2::new(-2000.0, 0.0), Vector2::new(1.0, 0.0));
println!("Dynamic + Static: {}",
physics_world
.collision_world()
.interferences_with_ray(&ray, all_groups)
.count());
}
```

Output:

> Static: 0
> Dynamic: 1
> Dynamic + Static: 1

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.