collision-detection 相关问题

碰撞检测是确定几何对象是否相交的问题。它是计算机图形学,CAD / CAM,动态模拟和计算机游戏中的重要课题。

unity 2D 中的 OnCollisionEnter2D 问题

我正在用 C# 在 Unity 2D 中开发俄罗斯方块游戏。我想检测精灵和四边形之间的碰撞作为墙壁,但我的 OnCollisionEnter2D 函数不起作用。 我将精灵放入数组中...

回答 1 投票 0

不久之后,碰撞停止工作并且物体A夹住物体B

进行基本的马术比赛(一种古老的街机游戏)克隆,达到碰撞检测,一开始似乎可以工作。 但我发现当我在平台上保持静止或者即使我在平台上移动时,af...

回答 1 投票 0

如何修复pygame中这些圆圈的碰撞?

所以,基本上我希望两个圆以加速度1向彼此加速。我想在圆碰撞时停止。 但是,代码会在冲突之前停止。这是因为它计算...

回答 1 投票 0

如何分别定义 x 和 y 的碰撞?

因此,在这个函数中,我对球和桨之间的碰撞进行检测并得分(以及与此问题无关的其他内容)。当球击中球拍时,它会在 o 中反弹...

回答 1 投票 0

为什么第二个方法调用会使java崩溃?

我正在使用 lwjgl 制作一个 java 3d 项目。 调用 Sphere.getVertices() 方法时 Java 崩溃。但是当我尝试检测两个立方体之间的碰撞时,我看到一个没有组件的黑屏,但是......

回答 1 投票 0

在Unreal中,球体组件与地板或墙壁碰撞时可以同时生成Hit和BeginOverlap事件吗?

假设我的虚幻引擎项目中有一个滚动的球。我想检测球何时接触地板以及何时不接触地板(就像我可以在 Uni 中使用 OnCollisionEnter 和 OnCollisionExit 所做的那样......

回答 1 投票 0

如何在pygame程序中获得分数功能?

我一直在尝试在我尝试制作的一个简单游戏中将分数记录在变量中。 当子弹和外星人(代码中的敌人)之间的距离小于一定值时,分数就会增加

回答 1 投票 0

pygame 中的碰撞检测。错误:没有属性“矩形”

pygame 新手,编写一些代码来尝试检测碰撞。这是我编写的一个小测试文件来演示该错误。它实例化两个精灵,并尝试检测...

回答 1 投票 0

UnityPhysics2D.Raycast 成功了

我正在尝试使用Physics2D.Raycast来检查玩家是否在地面上(我知道还有其他方法来检查玩家是否在地面上,但我认为光线投射是......

回答 3 投票 0

修复由多个碰撞体组成的飞机上的幽灵碰撞?

基本问题:当玩家在由多个碰撞体组成的平坦表面上移动时,Unity 的物理引擎会产生奇怪的碰撞。幽灵碰撞发生在 Collide 之间的接合处...

回答 2 投票 0

如何访问瓦片地图(Unity 2D)中某个瓦片的位置?

我目前正在尝试找到一种方法来获取与我碰撞的特定图块的位置。我有一个带有瓦片地图碰撞器的大型瓦片地图,并且我有一个具有脚本的播放器(见下文)...

回答 1 投票 0

定向边界框之间的最短距离

这就是我面临的问题。给定两个定向边界框(8个顶点、中心、范围),我想获得框之间的最短距离。 具体来说,我有两个移动的车辆物体...

回答 0 投票 0

Pygame 中与敌人的碰撞检测仅在特定情况下有效

我有一个基本的 Pygame 平台游戏 - 我的第一个 - 有一个玩家和一个敌人(现在只有一个敌人,但会有更多)和盒子。敌人在箱子上行走并返回......

回答 0 投票 0

如何让我的球从球拍上弹起 - 处理 4.2

我一直在尝试让我的球从桨(矩形)上弹起,桨(矩形)具有固定的 y 位置,但 x 位置由 mouseX 控制,但它不起作用,我不确定我做错了什么...

回答 1 投票 0

快速,但不一定精确定位 3D 三角形上最近的点?

我有一个情况,我需要在很多三角形上找到距离球体中心最近的点。然而,准确性并不是那么重要......它需要大致准确,但错误率......

回答 1 投票 0

如何在 Javascript 中解决轴对齐矩形到矩形边界框的冲突?

我最近一直在开发一款游戏,游戏中有玩家和其他实体可以碰撞的墙,但我唯一的问题是我不知道如何将 Rectangle 解析为 Recta ...

回答 0 投票 0

如何在 JavaScript 中检查直线是否与圆相交?

我正在创建一个库,这样我可以更轻松地创建 HTML5 canvas 游戏。我目前正在研究碰撞检测。这是我为线/圆碰撞编写的代码如下。 object1 是...

回答 2 投票 0

如何检测移动的圆和矩形之间的碰撞点?

如果你有一个以速度 V 运动的圆 C,你如何计算与矩形 R 碰撞的冲击点? 我问这个并希望立即回答我自己的问题

回答 1 投票 0

两个圆圈之间的碰撞行为不正确

#include #包括 #包括 #包括 #包括 #包括 #包括 #include <SFML/Graphics.hpp> #include <SFML/Audio.hpp> #include <SFML/System.hpp> #include <Windows.h> #include <iostream> #include <math.h> #include <cmath> #include <thread> #include <random> double DISTANCE( sf::Vector2f l, sf::Vector2f k); bool Check_Collision(sf::CircleShape x, sf::CircleShape y); double angle_opp(sf::Vector2f l, sf::Vector2f k); double angle(sf::Vector2f l, sf::Vector2f k); double angle_adj(sf::Vector2f l, sf::Vector2f k); int main() { int i = 1; int x1 = 400; int y1 = 200; int x2 = 200; int y2 = 200; int rad = 20; sf::Clock clock; sf::RenderWindow window(sf::VideoMode(1000,1000),"Sheka Snake"); sf::CircleShape circle1; sf::CircleShape boost; circle1.setPosition(x1,y1); circle1.setRadius(rad); boost.setPosition(300, 500); boost.setRadius(10); boost.setFillColor(sf::Color::Red); window.clear(); window.draw(circle1); window.display(); window.setFramerateLimit(60); window.setVerticalSyncEnabled(false); sf::Vector2f f1; sf::Vector2f f2; bool collid = false; while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } float fps = clock.restart().asMilliseconds(); float speed = 0.3f * fps; if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { circle1.move(-speed, 0); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { circle1.move(0, -speed); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { circle1.move(0, speed); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { circle1.move(speed, 0); } if (Check_Collision(circle1, boost) == true) { std::random_device dev; std::mt19937 rng(dev()); std::uniform_int_distribution<std::mt19937::result_type> dist6(0, 1000);// distribution in range [1, 6] std::cout << dist6(rng)<<std::endl; boost.setPosition(dist6(rng), dist6(rng)); rad = rad + 30; circle1.setRadius(rad); } sf::Vector2f l; sf::Vector2f k; l = circle1.getPosition(); k = boost.getPosition(); window.clear(); window.draw(circle1); window.draw(boost); window.display(); } } double DISTANCE(sf::Vector2f l, sf::Vector2f k) { double dy = (l.y - k.y); double dx = (l.x - k.x); double d = sqrt(pow(dy, 2) + pow(dx, 2)); return d; } double angle_opp(sf::Vector2f l, sf::Vector2f k) { return (k.y - l.y); } double angle_adj(sf::Vector2f l, sf::Vector2f k) { return (k.x - l.x); } double angle(sf::Vector2f l, sf::Vector2f k) { return atan((k.y - l.y) / (k.x - l.x)); } bool Check_Collision(sf::CircleShape x,sf::CircleShape y) { using namespace sf; Vector2f v1; Vector2f v2; v1 = x.getPosition(); v2 = y.getPosition(); std::cout << "x:" << v2.x << "y:" << v2.y << std::endl; double dis =DISTANCE(v1,v2); double a; if (dis <= x.getRadius() + y.getRadius()) { return true; } } 你好,我是一名尝试学习 SFML 的初学者,我尝试让一个球在外部与另一个球碰撞,但碰撞无法正常工作,有时球在接触另一个球之前发生碰撞,有时在进入另一个球后发生碰撞。第一次碰撞后的距离似乎计算不正确 根据您提供的代码,我认为您试图解决的问题是由于您正在计算所有这些距离并比较它们和其他东西但不考虑起始(原点)偏移而造成的。当我们通常比较或计算这些物体的距离时,对我们来说物体的起点总是在中心。而在 sfml 中,原点总是在形状的左上角。对于任何非矩形形状,它是围绕形状边缘绘制的矩形(不可见)的左上角。 但是有一个更简单的解决方案。 SFML 已经有一个内置的基本碰撞: int main() { sf::CircleShape circ1; sf::CircleShape circ2; cout << circ1.getGlobalBounds().intersects(circ2) << endl; 上述函数获取 circ1 的面积并检查是否有任何其他 sf::Drawable 与该形状接触。希望这有帮助

回答 1 投票 0

如何使一个 Reality Composer 场景中的分组对象可拖动?

所以我将 Reality Composer 文件“Experience”加载到具有三个场景的 XCode 项目中。 我添加了适用于 XCode 的行为和动作。动作完美,隐藏和

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.