在 Android 游戏中定义边界的圆形区域

发布于 2024-10-12 21:52:10 字数 529 浏览 4 评论 0原文

我想制作一个带有小行星的简单月球着陆器变体。我有小行星,但我很难知道如何将它们定义为有边界的区域,如果我的飞船穿过这些区域,就会导致玩家失败。关于定义圆形像素区域有什么技巧吗?如果有帮助的话,我知道我的小行星的确切坐标。

谢谢你的建议。

(寻找碰撞检测建议)

编辑:我个人的解决方案,稍微冗长一些,但并不比下面的解决方案更有帮助:)

public boolean collisionDetection(double xa, double ya, double ra, double xb, double yb, double rb) {

        double distance = Math.sqrt(Math.pow(xa-xb, 2) + Math.pow(ya-yb, 2)); 

        if (distance < ra+rb)
            return true;
        else 
            return false;
    }

I want to make a simple lunar lander varient with asteroids. I've got asteroids, but I'm stumped on how to make them defined areas with bounds that if my ship crosses causes the player to lose. Any tips about defining a circle pixel area? If it helps, I know the exact coordinates of my asteroids.

Thanks for your advice.

(Looking for collision-detection advice)

Edit: My personal solution, slightly more verbose but no more helpful than the solution below :)

public boolean collisionDetection(double xa, double ya, double ra, double xb, double yb, double rb) {

        double distance = Math.sqrt(Math.pow(xa-xb, 2) + Math.pow(ya-yb, 2)); 

        if (distance < ra+rb)
            return true;
        else 
            return false;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

意犹 2024-10-19 21:52:10

这假设你知道小行星和飞船的坐标和大小:

float x = Asteroid.X - Ship.X;    
float y = Asteroid.Y - Ship.Y;
float radius = Asteroid.Radius - Ship.Radius;

x *= x;
y *= y;
radius *= radius;

if((x+y) < radius) 
{
   //collision 
}

编辑:我的函数是错误的抱歉,使用这个

谢谢 LarsH

This assumes you know the asteroids and ships co-ords and size:

float x = Asteroid.X - Ship.X;    
float y = Asteroid.Y - Ship.Y;
float radius = Asteroid.Radius - Ship.Radius;

x *= x;
y *= y;
radius *= radius;

if((x+y) < radius) 
{
   //collision 
}

EDIT: my function was wrong sorry, use this one

Thanks LarsH

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文