标签: collision-detection

检测div碰撞?

这就是我现在正在做的事情:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>untitled</title>
    <meta name="generator" content="TextMate http://macromates.com/">
    <style type="text/css" media="screen">

        body { font-family:"HelveticaNeue-Light"; margin: 0px; }
        input { width: 75%; }
    #wrap { background: #f1f1f1; border: 1px solid #d9d9d9;  padding: 0px; }

/*    #sprite { position: relative; background: #909090; width: 20px; height: 20px; padding: 20px; }*/
        #spriteChatBubble { position: relative; background: #fff; border: 1px solid #000; font-size: 10px; max-width: 200px; }

        #controlArea { margin-top: 50px; }

        .button …
Run Code Online (Sandbox Code Playgroud)

html css jquery collision-detection

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

捕食者 - 猎物模拟

我正在尝试实现捕食者 - 猎物的模型.它是基于代理的模型.每隔几毫秒就是一个新举措.在场上有两种类型的生物:捕食者和猎物.每个人的行为由以下规则给出:

猎物:

  1. 刚搬到一个空置的牢房
  2. 每走几步都会为他的老牢房创造后代
  3. 预期寿命受移动次数的限制

铁血战士:

  1. 捕食者用猎物移动到细胞.如果不是这样的细胞,则在任何自由的相邻细胞中
  2. 相同
  3. 相同

我有选择猎物移动的问题. 猎物

例如,我在单元格5和9中有捕获.它们中的每一个都可以移动到单元格6.如何解决此冲突?谢谢

algorithm simulation collision-detection agent agent-based-modeling

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

更快的相交测试(AABB-AABB或AABB三角形)

哪个交叉点测试通常更快?一个轴对齐的边界框与另一个?或者带有三角形的轴对齐边界框.

我假设AABB-AABB,但我听到了不同意见.

performance intersection collision-detection aabb

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

使用Rectangle.Intersects()无法正确检测到碰撞

我正在使用单个精灵表图像作为我的突破游戏的主要纹理.图像是这样的:

breakout_sprite_sheet

我的代码有点令人困惑,因为我使用a创建来自相同Texture的两个元素Point,以表示元素大小及其在工作表上的位置,a Vector,表示它在视口上的位置以及Rectangle表示元素本身的位置.

Texture2D sheet;

Point paddleSize = new Point(112, 24);
Point paddleSheetPosition = new Point(0, 240);
Vector2 paddleViewportPosition;
Rectangle paddleRectangle;

Point ballSize = new Point(24, 24);
Point ballSheetPosition = new Point(160, 240);
Vector2 ballViewportPosition;
Rectangle ballRectangle;
Vector2 ballVelocity;
Run Code Online (Sandbox Code Playgroud)

我的初始化也有点令人困惑,但它按预期工作:

paddleViewportPosition = new Vector2((GraphicsDevice.Viewport.Bounds.Width - paddleSize.X) / 2, GraphicsDevice.Viewport.Bounds.Height - (paddleSize.Y * 2));
paddleRectangle = new Rectangle(paddleSheetPosition.X, paddleSheetPosition.Y, paddleSize.X, paddleSize.Y);

Random random = new Random();
ballViewportPosition = new Vector2(random.Next(GraphicsDevice.Viewport.Bounds.Width), random.Next(GraphicsDevice.Viewport.Bounds.Top, GraphicsDevice.Viewport.Bounds.Height / 2));
ballRectangle = …
Run Code Online (Sandbox Code Playgroud)

c# xna collision-detection

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

Java Game Dev:检查玩家是否介于两个y coords之间

我正在制作游戏 看起来像这样使用Slick2D.当玩家进入一个有敌人的窗口时,他们可以射击,并且会加入积分.除了射击之外,我还有完成所有技工.这是我关于它如何运作的"计划".

当玩家到达窗口下方(程序通过y坐标拾取)并触发时,点数将被添加到计数器中.

我怎样才能让我的程序意识到玩家确实在窗户下面?

谢谢,这是我的PlayState代码.

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
import org.newdawn.slick.Image;
import org.newdawn.slick.state.transition.FadeInTransition;
import org.newdawn.slick.state.transition.FadeOutTransition;
import java.util.Random;
import java.util.TimerTask;
import java.util.Timer;

public class PlayState extends BasicGameState{

int stateID = -1;

int w = SwegBoi.WIDTH;
int h = SwegBoi.HEIGHT;
static int enemylocation;
float s = SwegBoi.SCALE;
Image playbackground;
Image swegboiplayer;
Image quit;
Image enemy1;
Image enemy2;
float playery;
int score = 0;

final static Random ran = new Random();
static Timer tm = …
Run Code Online (Sandbox Code Playgroud)

java 2d collision-detection

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

如何识别两个图像视图在动画移动时的碰撞?

当两个视图发生碰撞时我正在处理警报,这里我使用了两个在不同方向上移动的图像视图,它们会在一个点上发生碰撞.我使用基本的动画代码在各自的方向上移动这些图像.(注意: - 不仅如下图所示,但是如果它们在方面发生碰撞我们需要显示警报)

在此输入图像描述 在此输入图像描述

objective-c collision-detection uiviewanimation ios

5
推荐指数
2
解决办法
775
查看次数

快速检测两个UIView的碰撞

我的ViewController上有两个UIViews.我将panGesture添加到第一个视图,当我开始移动此视图时,第二个视图将移向第一个视图.我希望在这两个视图发生碰撞时检测到一个事件.这是我的代码.

@IBAction func dragFirstView(sender: UIPanGestureRecognizer) {

        let translation = sender.translationInView(self.view)

        dispatch_async(dispatch_get_main_queue()) { () -> Void in
            UIView.animateWithDuration(2.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
                self.secondView.frame = CGRectMake(sender.view!.center.x + translation.x, sender.view!.center.y + translation.y, self.secondView.frame.size.width, self.secondView.frame.size.height)
                }, completion: nil)
        }

        sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
        sender.setTranslation(CGPointZero, inView: self.view)
    }
Run Code Online (Sandbox Code Playgroud)

collision-detection ios uipangesturerecognizer

5
推荐指数
2
解决办法
6667
查看次数

USphereComponent和重叠事件

我似乎误解了如何在我的组件上实现重叠事件.我创建了一个USphereComponent来跟随我的角色.它旨在解决玩家触及范围内其他附近演员的重叠事件:

AScrollsCharacter::AScrollsCharacter()
{
    ...Redacted irellevant code...

    //Create activate trigger radius
    USphereComponent* activateRadius = CreateDefaultSubobject<USphereComponent>(TEXT("Activate Radius"));
    activateRadius->InitSphereRadius(ACTIVATE_RADIUS);
    activateRadius->bGenerateOverlapEvents = true;
    activateRadius->SetupAttachment(RootComponent);
    activateRadius->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);
    activateRadius->OnComponentBeginOverlap.AddDynamic(this, &AScrollsCharacter::OnOverlapActivateSphere);
    activateRadius->bHiddenInGame = false;
}

void AScrollsCharacter::OnOverlapActivateSphere(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("We got a collision."));
}
Run Code Online (Sandbox Code Playgroud)

球体组件无错误地附着,并且在屏幕上以正确的大小绘制半径.但是,当我将半径移向游戏中的其他角色并导致它们重叠时,该事件似乎不会被触发.

所有涉及的参与者都将Generate Overlap Events标志设置为true.

有人可以帮我理解我在这个设置中缺少的东西吗?

编辑:球体组件的调试范围在编辑器中显示为橙色,但在游戏运行时变为红色.这种颜色变化有意义吗?

c++ collision-detection unreal-engine4

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

碰撞检测不应该使对象传送出去

解决了,查看最后算法的帖子底部

背景:我正在使用JS和HTML canvas元素处理2D平台游戏.关卡图是基于图块的,但播放器没有夹在图块上.我在Code inComplete中使用了"Tiny Platformer"中概述的碰撞检测算法.它主要适用于一个边缘情况(或''ledge''情况).

问题:

壁架问题的GIF

玩家正在倒下并向右移动进入墙壁.当它下降时,它会传送到壁架的高度.相反,玩家应该在没有传送的情况下正常下降.

有没有办法改变算法来防止这种行为?如果没有,你能建议一个备用的碰撞检测算法吗?理想情况下,任何修复都不会假设玩家总是摔倒,因为在游戏中玩家的跌倒方向在上/下/左/右之间切换.

算法:

  1. 假设没有碰撞,计算玩家的新位置.(未在下面的代码中显示)

  2. 一个被调用的函数getBorderTiles接受一个对象(玩家)并返回触及每个玩家4个角落的图块.由于玩家不大于瓷砖,因此这些边框瓷砖必然是玩家正在触摸的唯一瓷砖.请注意,其中一些图块可能相同.例如,如果玩家仅占据一列,则左上/右上方的区块将与左下方/右下方区块相同.如果发生这种情况,getBorderTiles仍会返回所有四个图块,但有些图块会相同.

  3. 它会检查水平贴图(2D阵列)中的这些边框切片,看它们是否是实心的.如果图块是实心的,则该对象与该图块碰撞.

  4. 它测试上/下/左/右碰撞.如果玩家向下移动并与向下的瓷砖碰撞但没有与相应的向上的瓷砖碰撞,则玩家正在向下碰撞.如果玩家向左移动并与左侧瓷砖碰撞但没有与相应的右侧瓷砖碰撞,则它向左碰撞.等等.在向左/向右检查之前执行向上/向下检查.如果在执行左/右检查之前存在向上/向下碰撞,则调整存储边界图块的变量.例如,如果玩家碰撞,它将被推入向上的区块,因此BL/BR区块现在与TL/TR区块相同.

  5. 玩家的x,y和速度将根据其碰撞的方向进行调整.

算法失败的原因:

看到这个图像.

右下方的瓷砖是实心的,但是右上方没有,所以(步骤4)玩家向下碰撞并且(步骤5)它被向上推.此外,它与BR瓦片碰撞但不与BL碰撞,因此它向右碰撞并向左推.最后,玩家将被渲染到壁架的上方和左侧.实际上它是传送的.

尝试解决方案:我试图修复此问题,但它只创建了另一个问题.我添加了一个检查,以便玩家只有在瓷砖内有一定距离(例如3px)时才与瓷砖碰撞.如果玩家只是在BR牌中,则该算法不会记录下来的碰撞,因此玩家不会传送.但是,如果球员在另一场比赛中摔倒在地,那么直到球员进入地面才会确认碰撞.当玩家跌落到地面,被推回地面,再次跌落等等时,玩家会感到不安.

感谢您阅读这篇文章.我非常感谢您的反馈.

当前算法代码:

var borderTiles = getBorderTiles(object), //returns 0 (a falsy value) for a tile if it does not fall within the level
      tileTL = borderTiles.topLeft,
      tileTR = borderTiles.topRight,
      tileBL = borderTiles.bottomLeft,
      tileBR = borderTiles.bottomRight,
      coordsBR = getTopLeftXYCoordinateOfTile(tileBR), //(x, y) coordinates refer to top left corner of tile
      xRight = coordsBR.x, //x of …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm 2d collision-detection game-physics

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

找到最近的可用空间而不与现有点发生碰撞

给定一组点,我正在寻找有关如何有效地找到给定宽度和高度(由红色框表示)到指定点(本例中的点4)的最近可用空间的想法.

在此输入图像描述

还给出了一组不同的点(如下所示),其中盒子不能紧靠第4点,我仍然希望找到最近的空间(如图所示).我判断点4与红框中心之间的距离"最接近".

在此输入图像描述

任何帮助或想法将不胜感激.

javascript algorithm geometry canvas collision-detection

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