Can't raycast static bodies
- 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.