标签: collision

检测两个可以旋转的精灵的碰撞

我在 2D Java 游戏中遇到碰撞检测问题。

通常,我会为可能与其他对象发生冲突的对象创建一个 getBounds() 方法。此方法将返回 a new Rectangle(x,y,width,height),其中xy是精灵左上角的坐标,widthheight是精灵的宽度和高度。

但是在我目前正在开发的游戏中,有一个由用户控制的“坦克”。只要玩家按住向左或向右箭头按钮之一,该坦克的精灵就会旋转。换句话说,它可以旋转到任何角度。坦克的精灵是一个矩形。

所以我不能简单地做我在这种情况下一直做的事情。

如何检测与这种精灵的碰撞?谢谢

java sprite bounding-box collision

1
推荐指数
1
解决办法
2889
查看次数

C++游戏导弹碰撞检测

我正在重建经典游戏小行星,我在使碰撞检测正常工作时遇到了一些问题.目前,下面的代码运行良好,但由于某种原因,它只会检测最后一枚已经发射的导弹上的碰撞.我的意思是,如果我在一颗静止的小行星上直线发射3枚导弹,前两颗将穿过小行星,而只有最后一颗将与它碰撞并按预期行动.我不太清楚为什么会这样,但我认为这与迭代导弹列表有关.

这是用于检测冲突的部分工作函数:

void checkMissileAsteroidCollision(struct particle *ast, struct particle *mis)
{
        float missileX = 0;
        float missileY = 0;

        float asteroidX = 0;
        float asteroidY = 0;
        float asteroidSize = 0;

    for( ; mis ; mis = mis->next ) 
    {
            missileX = mis->x;
            missileY = mis->y;

        for( ; ast ; ast = ast->next)
        {
            asteroidX = ast->x;
            asteroidY = ast->y;
            asteroidSize = ast->size;

            if(missileX < asteroidX + asteroidSize &&
                 missileX > asteroidX &&
                 missileY < asteroidY + asteroidSize &&
                 missileY > …
Run Code Online (Sandbox Code Playgroud)

c++ detection collision

1
推荐指数
1
解决办法
164
查看次数

Unity:使用标签进行 2D 碰撞检测

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Bullet")
    {
        Destroy(gameObject);
        Debug.Log("hit");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码,我很感激还有很多其他来源,但是我在互联网上查看过,只是无法理解我哪里出了问题。我知道它可能很小。我正在尝试使用标签进行碰撞检测并销毁“此”游戏对象。Bullet 预制件具有 Bullet 标签并且拼写完全相同,两个游戏对象都具有刚体和 2D 盒子碰撞器。

任何帮助都会很棒。

c# 2d collision unity-game-engine

1
推荐指数
1
解决办法
2万
查看次数

如何在 Pygame 中检测圆或球的碰撞?

我想在 pygame 中制作一个脚本,其中两个球飞向彼此,当它们碰撞时,它们应该彼此弹开,但我不知道该怎么做,所以你能帮助我吗?

python pygame collision-detection collision

1
推荐指数
1
解决办法
4239
查看次数

你能解释一下这个Java哈希映射键冲突吗?

我有一个HashMap,并按以下方式使用:

HashMap<SomeInterface, UniqueObject> m_map;

UniqueObject getUniqueObject(SomeInterface keyObject)
{
     if (m_map.containsKey(keyObject))
     {
         return m_map.get(keyObject);
     }
     else
     {
         return makeUniqueObjectFor(keyObject);
     }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我看到不同类的多个对象匹配m_map.containsKey(keyObject)上的相同键.

所以这是我的问题:

  1. 这可能吗?Map接口说它使用equals()来比较键是否为空.我没有在任何SomeInterface类中重写equals().这是否意味着equals方法可能是错误的?

  2. 如果上述情况属实,那么如果HashMap实际上是同一个对象而不是副本,我怎么才能让它在equals()上返回true?这是否可以通过说if(object1 == object2)?我早期在Java开发中被告知我应该避免这样做,但我从未发现应该何时使用它.

提前致谢.:)

java hashmap collision

0
推荐指数
1
解决办法
2039
查看次数

Box Collision代码

我的箱子碰撞代码不起作用.

bool checkCollide(int x, int y, int oWidth, int oHeight, int xTwo, int yTwo, int oTwoWidth, int oTwoHeight)
{
   if (xTwo + oTwoWidth < x) 
      return false;  // box 2 is left of box 1

   if (x + oWidth < xTwo)
      return false;  // box 1 is left of box 2

   if (xTwo > x + oWidth) 
      return false;  // box 2 is right of box 1

   if (x > xTwo + oTwoWidth)
      return false;  // box 1 is right …
Run Code Online (Sandbox Code Playgroud)

c++ collision

0
推荐指数
1
解决办法
1万
查看次数

拖动碰撞

我对CANVAS和Kineticjs都很陌生,但我觉得我正在尝试的事情应该比我做得更容易.基本上这是我到目前为止:

我试图使用的代码来自kineticjs当与另一个解决方案重叠时停止拖动到一个形状但是无法让它工作.

请查看实时jsfiddle 代码

var isRectCollide = function(target, box) {
  if (target.x - target.width  >= box.x + box.width  &&
  target.y - target.height >= box.y + box.height &&
  target.x + target.width  <= box.x + box.width  &&
  target.x + target.height <= box.y - box.height )
    return false;
  else
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这个想法是粉红色的方块可以拖动,但被橙色框阻挡,一旦拖动橙色框,粉红色框"触摸"蓝色框,弹出应该发生.

我不确定使用kineticjs是否是最简单的实现方法呢?

任何想法,提示或帮助我都会非常感激.

javascript collision-detection collision kineticjs

0
推荐指数
1
解决办法
2250
查看次数

2d html5画布碰撞,howto

正如标题所示,我遇到了物体碰撞问题......我目前正在使用JavaScript进行2d Html5画布游戏.我知道如何防止"玩家"对象超出游戏画布的宽度/高度,并且我知道当玩家与物体碰撞时如何做某事(例如加电或敌人或其他什么)但我只是不知道如何制作一个"坚实"的物体意味着当玩家击中固体物体时,玩家只是停下来,并且无法通过固体物体.

这就是我现在所拥有的(不是所有的代码只是我觉得相关,对不起,如果它太多/太少:

  var canvasPlayer = document.getElementById('canvasPlayer');
var ctxPlayer = canvasPlayer.getContext('2d');
var canvasWalls = document.getElementById('canvasWalls');
var ctxWalls = canvasWalls.getContext('2d');

function checkKeyDown(e) {
        var keyID = (e.keyCode) || e.which;
        if (keyID === 38 || keyID === 87)   { // up arrow OR W key
        if (!player1.isDownKey && !player1.isLeftKey && !player1.isRightKey) {
        player1.isUpKey = true;
        e.preventDefault();
        } }
        if (keyID === 39 || keyID === 68)   { //right arrow OR D key
        if (!player1.isDownKey && !player1.isLeftKey && !player1.isUpKey) {
        player1.isRightKey = true; …
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas collision html5-canvas

0
推荐指数
1
解决办法
5232
查看次数

UIimageview适合圆形

我有一个UIImageview包含一个圆圈(障碍物),然后另一个UIImageview包含另一个图像(我的角色).当我的圈子击中我的角色时,游戏结束.

我的问题发生在游戏结束时,角色触摸UIImageview我的圆圈所在的方框,而不是UIImageview方框内的圆圈.

我能想到的解决方案是:

  • 使UIImageview圆形适合我的圆圈.
  • 以某种方式检测我的角色像素和圆形像素之间的碰撞而不是UIImageviews.

真的很感激帮助和想法.我是xcode的初学者.

谢谢!

iphone collision uiimageview ios

0
推荐指数
1
解决办法
2966
查看次数

Lua碰撞零值

当我尝试执行以下代码时,它给了我这个错误:

尝试索引字段'other'(零值)

但我不知道为什么.

代码:

function onCollision(event)
 if event.phase == "began" then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
     end
   end
 end
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

null lua physics collision

0
推荐指数
1
解决办法
129
查看次数