Articles of 碰撞避免

用C#中的墙避免障碍

我正在努力避免一些障碍。 但不知何故,事情并不顺利。 我已经使用了“编程游戏人工智能的例子”一书在c#中与XNA结合创建一个simular函数。 这就是我现在正在做的事情: public Vector2 ObstacleAvoidance(List<Obstacle> obstacles) { //the detection box length is proportional to the agent's velocity Owner.DetectionBox = Owner.MinDetectionBoxLength + ((Owner.Speed() / Owner.MaxSpeed) * Owner.MinDetectionBoxLength); //tag all obstacles within range of the box for processing TagObstaclesWithinViewRange(Owner); //this will keep track of the closest intersecting obstacle (CIB) BaseGameEntity ClosestIntersectingObstacle = null; //this will […]

AABB扫描与体素世界的碰撞反应

我遵循这个教程: 链接 ,我能够使它与3d体素世界的碰撞工作。 但是我遇到的问题是碰撞响应。 我想让玩家在靠墙的时候滑到墙上,而不是卡在每个体素边缘。 这是因为我得到了正常的AABB扫描testing是体素的一部分。 (是的,我正在做广泛的检查首先)。 在上面的图像是我的问题的2D表示。 体素是黑色矩形,蓝色是玩家,红色是扫描检查区,绿色线是法线。 我想到的可能的解决scheme是: – 将体素合并到基于邻居的更大的碰撞盒中,但是当洞出现并且玩家大小增加时,会导致其他问题。 – 如果沿正常方向存在邻居体素,则忽略碰撞正常。 这是我目前在我的代码中,并在地面上滑动墙壁时工作正常,但倒在他们身上时失败: http : //ideone.com/xdsr2d 因为碰撞的次数和碰撞的次序(我在aabb扫描testing后得到的体素和法线的次序)中有许多体素是难以预测的,所以难以确定熔融接缝是否足够好。 我很感激任何帮助,因为我一直在围绕这个问题扑了很长一段时间。 (如果我的问题有任何问题,请告诉我,这是我第一次在gamedev.stackexchange上发帖)

如果当前目标不可访问,则在NavMesh上查找最近点

我有一个模拟环境设置了一个具有指定的“不可走”层的立方体。 我正在使用NavMeshAgent和NavMeshPath来设置播放器的目的地。 我设置path的方式是通过鼠标点击在地形上的光线投射点。 如果我点击具有“不可行走”图层的多维数据集,玩家只是碰到多维数据集并尝试到达这一点,我无法find解决办法。 我已经阅读了有关FindClosestEdge函数的统一,但我不认为这正是我正在寻找。 所以基本上我需要将目标位置更改为立方体旁边的最近点。 有任何想法吗?

Unity3d基于导航网格algorithm

我正在Unity3d上开发一款游戏。 在这场比赛中,两支队伍将会在没有任何人际交往的情况下战斗 如果相同的队伍是相同的,战斗结果必须总是相同的。 这样,我必须在许多设备上再现相同的战斗,在每个设备中获得相同的结果。 战斗发生的地图是3D环境,所以我的士兵可以向任何方向移动。 士兵不能走在另一个士兵的同一个空间,所以我需要一个代理避税algorithm。 我有一些麻烦find上述问题的解决scheme。 为了达到“总是相同的结果”,我把这个战斗视为基于转向的策略游戏,在转弯之间几乎没有固定的时间间隔。 为了计算士兵的path查找,我正在使用Unity3d navmesh框架。 然后我根据“NavMeshAgent”'steeringTarget'属性手动移动我的代理。 但是这个方法并没有涵盖障碍避免algorithm,而且我的代理重叠。 所以,我正在寻找一个解决我的问题的方法,它应该是一个手动避障algorithm,或者是一种在固定的时间间隔内统一导航网格工作的方法,或者是一种全新的方法来寻找我的path问题。

Unity2D碰撞问题

我有一个箱子设置(在下面的图片)与刚体部件,箱对撞机和3个圆形对撞机(他们让我推箱子大部分时间没有被困在地板纹理这是正常的箱子对撞机)在图片中看到箱子和地板之间检测到碰撞,即使它们没有物理接触。 当地板箱碰撞机之间有微小的差别时,我怎么才能使碰撞更加精确,因为我的箱子被地板纹理卡住了?

如何使一个箱子碰撞2D通过另一个在Unity?

我怎样才能让一个Box Collider 2D在Unity中通过另一个? 我试过这个 ,但是它似乎只适用于普通的箱子对撞机,而不适用于箱子对撞机2D。

如何将严格限制转换为逐渐减速?

玩家移动一个法术物体,该法术必须保持在一定范围内。 这个法术是使用物理系统移动的,具有质量和速度。 目前,当咒语超出范围时,它将被移回范围内,这会使咒语突然停止在边缘。 我想要平息这个突然的停顿,使它逐渐变慢。 我尝试使用缓动function,但由于时间和距离每隔一帧都会改变,所以我无法弄清楚这个公式。 是否有某种物理或缓和的公式可以用来逐渐减慢咒语,直到它达到其范围的边缘,同时保证它永远不会离开范围? 附加信息: 法术的范围是一个圆圈。 我只关心法术对象的中心。 运动部队不断被应用到这个咒语上。

以瓦片为基础构建不规则地形

我开始建立一个2D游戏,类似于metroidvania,基于tile的等等。 我之前已经有了一些经验,对于之前的比赛,主要的失败之一就是世界看起来过于“无聊”,有些时候它们不应该是无机的(地下洞穴根本不是方形的)。 所以,现在我试图想出一个像Cave Story一样建立一个世界的方法: 它有一些不错的角度,感觉比纯粹的平铺世界更好。 据我所知,SP早在2002年就用AS2建造了这个世界,当时电脑还没有全部处理能力,所以我觉得他没有用过任何沉重的面具去做。 与我的一位老师交谈,他建议那个人用光线投射来search矩形瓷砖中的不透明像素。 不知道,如果这是真的,但我决定通过这里得到进一步的帮助。 如果可能的话,我希望对这种工作有一些好的和软的方法。

将寻路僵尸arrays碰撞到数组块

相关的背景信息 我是加拿大十一年级的高中计算机科学学生。 目前我的performance相当不错,目前我有96分。 我们在本学期的最后2个月里正在研究我们的2D游戏。 我正在使用面向对象的Python和Pygame来开发我的游戏。 我创建的游戏是一个自上而下的2D僵尸射击游戏。 非常简单,就像原来的“使命召唤:黑色”操作系统中的Dead ops街机游戏模式的2D版本。 我现在有一个球员,他移动,旋转鼠标和射击的子弹的方向鼠标(使用我上线的vector类)。 我也使用string来devise我的水平,水平加载器加载string并创建一个块数组。 我有一些僵尸的产生,并使用基本(非vector)(逻辑)path寻find达玩家。 (例如:如果玩家在僵尸的右边,僵尸就会右转)。 也是一个块的数组。 现在我的碰撞为球员工作。 我使用基本的AABB碰撞与玩家的所有块,并采取行动,如果碰撞被发现。 我的块在pygame.Rects和我的僵尸和玩家都有碰撞矩形是他们的实际矩形的一半大小。 我正在尝试做什么 我试图让僵尸的path寻找玩家的方式,但僵尸不能通过我的块。 所以一个基本的碰撞检测algorithm,追踪我的寻路。 防止僵尸远离街区。 我试过了 我尝试应用在线解释概念,我也尝试应用与我的播放器使用的相同的碰撞策略。 我已经尝试了对每个僵尸墙进行AABB检查的循环(对于每个块和每个僵尸)的双倍,但它只是使它们穿过墙的小故障。 我在问什么 我要把一些代码放在下面。 如果任何人可以给我图解释或一些代码,我将如何做到这一点。 我会尝试尽可能多地给出相关的代码,以便从代码开发的角度对我的思维过程有一个基本的了解。 下面给出的代码也是很好的。 相关的代码 球员碰撞代码(水平类,玩家实例传入): """ CHECK PLAYER COLLISION WITH WALLS """ for i in range(1, 5): # run a for loop for all player walls player.setCollisionBound(i, False) # default […]

向我解释互惠速度对象

这是对这个问题的跟进( RTS的单位避免 ) 我正在开发一个RTS。 我在碰撞检测方面遇到了一些困难……我查了一下RVO,看起来像是正确的解决scheme,但是我很难理解它是如何工作的。 有人可以用可理解的术语来解释RVO背后的math吗? 我尝试编译RVO示例程序,但不会在最新版本的Visual Studio中编译。 我很难过