Articles of 碰撞检测的

如何正确处理2D Platformer中的攻击?

我正在JavaScript中构建一个2D引擎,如果我的演员攻击了一个敌人,一个hitbox会出现一段时间,然后消失。 如果目标在站内保持站立,那么每一帧都会被排空。 因此,例如,如果hitbox造成3点伤害,而目标只有9 HP,他将在3帧后死亡。 这太快了。 我提出了两个解决scheme,他们都不是理想的: 在每次击中之后将敌人设置为不可攻击的一段时间。 保存一个对在hitbox消失后被删除的敌人的引用。 我的解释是非常糟糕的,但发布我的代码会更糟,因为它太多了。

在Unity2d中发生连续的碰撞

我正在Unity2d上工作。 我在屏幕上有一个名为gameobject1的游戏对象。 它拥有一个图像(称为“国家”)。 当我在一个gameobject1上拖动一棵树时,碰撞在同一个图层中连续发生,而不是一次。 我已经将Physics2Ds组件Rigidbody2D添加到树对象上。 有没有解决这个问题?

javascript高效碰撞检测

我有一个处理游戏,我有严重的碰撞检测滞后问题。 然而,我使用了我能想到的最有效的代码,然而在9级之后,游戏变得难以忍受。 我会告诉你的代码,但网站不会处理我的lessthans。 如果你想检查程序,你可以在这里find它: https ://www.khanacademy.org/computer-programming/tanks-v1245/6637554186715136下tankMelee函数〜线160

碰撞检测增强

我正在开发一个类似SpaceInvader的游戏。 出现了如何处理碰撞检测的问题。 起初我是这样做的: forEach(fireBall : fireBalls) { forEach(stormTrooper : stormTroopers) { if (collides(fireBall, stormTrooper)) { // Explode 但是当玩游戏的时候,我感觉游戏在某个时候正在放慢速度 ,我认为这与多元素和双重循环有关。 所以我试图打破循环,只要有机会,同时更改forEach循环for循环: for (var i = 0; i < fireBalls.length; i++) { if (stormTroopers.length > 0 && fireBalls[i].y > stormTroopers[0].y) { break; } for (var j = 0; j < stormTroopers.length; j++) { if (fireBalls[i].y > (stormTroopers[j].y […]

对玩家造成伤害

我必须做一个简单的“雪崩”游戏,以显示我知道如何使用物理和创建地形。 但是我实际上想要超越一点,实际上给了玩家健康,所以有一个真正的目的来躲避球形物体。 我发现了一个关于如何设置玩家健康的非常有用的指导,唯一的是我不知道如何设置玩家在与球体碰撞时受到伤害。 这里是我为球员健康的代码 #pragma strict public var health : float = 100f; // How much health the player has left. public var resetAfterDeathTime : float = 5f; // How much time from the player dying to the level reseting. public var deathClip : AudioClip; // The sound effect of the player dying. private var […]

2arrays之间的2D碰撞

我正在尝试在我的游戏中进行子弹和敌人之间的碰撞检测。 但它是非常不可预测的,有时它是有效的,有时它不(没有做任何事情就直接通过),有时它会杀死返回“Uncaught TypeError:Can not read property'x'of undefined”的脚本。 碰撞检测对于像这样的循环来说是微不足道的: if (enemies.length > 0 && bullets.length > 0) { for (a = 0; a < bullets.length; a++) { for (b = 0; b < bullets.length; b++) { if (bullets[a].x + 36 >= enemies[b].x && bullets[a].x <= enemies[b].x + 56 && bullets[a].y >= enemies[b].y && bullets[a].y + 6 […]

我如何创建一个空间网格?

我只是为我的游戏创建了一个贴图,还有一个侧面的游戏。 这场比赛看起来有点像Terraria,那里有你可以放置和rest的地方。 我希望玩家能够与块相撞,我不知道如何实现这样的事情。 游戏是在Javascript中,但我可以理解其他语言,所以可以自由地给你select的语言的例子。

旋转的精灵碰撞检测

我试图在我的游戏中实现checkCollision函数,我使用AABB方法,但问题是我的精灵旋转,所以它不是很精确。 我可以用旋转的椭圆形精确地描述我的精灵。 如果我有以下实体属性,是否还有更准确的检测碰撞的方法: entity.x entity.y entity.width entity.height entity.angle 这是我迄今编写的代码(x和y在我的精灵中间): this.checkCollision = function(entity1, entity2) { return (entity1.x – (entity1.width*this.COLLISION_EPSILON_WIDTH)/2 < entity2.x + (entity2.width * this.COLLISION_EPSILON_WIDTH)/2 && entity1.x + (entity1.width*this.COLLISION_EPSILON_WIDTH)/2 > entity2.x – (entity2.width * this.COLLISION_EPSILON_WIDTH)/2 && entity1.y – (entity1.height*this.COLLISION_EPSILON_HEIGHT)/2 < entity2.y + (entity2.height*this.COLLISION_EPSILON_HEIGHT)/2 && (entity1.height*this.COLLISION_EPSILON_HEIGHT)/2 + entity1.y > entity2.y – (entity2.height*this.COLLISION_EPSILON_HEIGHT)/2) } PS:我的表弟告诉我要用三个圆圈(它创造出一个与椭圆非常相似的形状),但我真的不知道该怎么做。

在碰撞JavaScript之后从任何对象弹跳

我试图在一个边界框+逐个像素的碰撞之后使球弹跳一些障碍物。 不知何故,有时球不会朝着它应该的方向前进。 如果球是跟随红色箭头,那么它应该跟随后面的绿色箭头。 发生什么事情是有时它会回来(橙色箭头)。 在这个墙上,甚至在左边墙上都会发生同样的情况。 这里是碰撞和reflection代码 isPixelCollision(element) { var x = Math.round(this.pos.x), y = Math.round(this.pos.y), x2 = Math.round(element.pos.x), y2 = Math.round(element.pos.y); var w = this.width, h = this.height, w2 = element.width, h2 = element.height; // find the top left and bottom right corners of overlapping area var xMin = Math.max(x, x2), yMin = Math.max(y, y2), […]

基于平铺的碰撞与移动的平台

我正在开发使用纯HTML / JavaScript的平台游戏。 在HTML5平台游戏碰撞检测问题的帮助下重建我的碰撞检测系统之后,我意识到我的移动平台检测是行不通的,因为我的移动平台(此时只有一个垂直移动的挡墙来阻止玩家)不会使用该tilemap渲染。 目前,我正在手动将其推向关卡中的一系列障碍。 这是我的碰撞检测代码: function collisionDetection() { player.onLadder = false; var bottomY = player.y + player.height; var bottomCol = collisionCheck(player.x + (player.width / 4), bottomY) || collisionCheck(player.x + (player.width / 2), bottomY) || collisionCheck(player.x + ((3 * player.width) / 4), bottomY); var topCol = collisionCheck(player.x + (player.width / 4), player.y) || collisionCheck(player.x + […]