gpt4 book ai didi

rust - 在流行的游戏引擎中,有没有一种方法可以检测Sprite的碰撞?

转载 作者:行者123 更新时间:2023-12-03 11:46:26 32 4
gpt4 key购买 nike

目前,我正在使用两个对象( cometd 和飞船)的位置来检测它们是否发生碰撞。

fn collision_detection(
comets: Query<&Transform, With<Comet>>,
mut ships: Query<(&Transform, &mut ShipStatus), With<Ship>>,
) {
for comet in comets.iter() {
for (ship, mut status) in ships.iter_mut() {
if comet.translation.x < ship.translation.x + 80.0 && comet.translation.y < ship.translation.y + 80.0
&& comet.translation.x > ship.translation.x - 80.0 && comet.translation.y > ship.translation.y - 80.0 {
status.dead = true;
}
}
}
}
但是必须有一种更好的方法来做到这一点。

最佳答案

Bevy目前没有完整的碰撞系统。除非自创建introductory page以来的几个月内没有对其进行扩展,否则:

Physics

Many games require collision detection and physics. I'm planning on building a plug-able physics interface with nphysics / ncollide as the first backend.


幸运的是,此简单示例实际上是由 bevy::sprite::collide_aabb::collide 提供的,它执行简单的AABB冲突检测。
use bevy::sprite::collide_aabb::collide;

let ship_size = Vec2::new(80.0, 80.0);
let comet_size = Vec2::new(0.0, 0.0);
for comet in comets.iter() {
for (ship, mut status) in ships.iter_mut() {
if collide(ship.translation, ship_size, comet.translation, comet_size).is_some() {
status.dead = true;
}
}
}

关于rust - 在流行的游戏引擎中,有没有一种方法可以检测Sprite的碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66567918/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com