HTML5
HTML5 - 碰撞[关闭](HTML5 - Collisions [closed])我正在做一个自上而下的游戏,这个游戏将包含很多简单而复杂的碰撞。
在做了一些研究之后,我明白我必须始终将我的角色与我的代码中的“对象”进行比较 - 然后检查碰撞计算。
例如:
CheckCollisions(Player, Object);这意味着我必须将场景中的每个可碰撞对象添加到我的代码中:
CheckCollisions(Player, Building1);CheckCollisions(Player, Building2);CheckCollisions(Player, Trash);CheckCollisions(Player, Bench1);CheckCollisions(Player, Bench2);CheckCollisions(Player, Office1);CheckCollisions(Player, Office2);首先,我的物体甚至可能不是简单的形状,它们可能是复杂的形状。 其次,他们中的一些人可能有自己的轮换。 第三,如果我的场景中有超过数万个可拍摄对象,会发生什么?
难道没有更简单的方法来检查HTML5 / JS游戏中的冲突吗?
这有可能吗? 我真的只是在寻找一些建议和指点。
谢谢
I'm working on a top down game, and this game is going to contain a lot of collisions simple and complex.
After doing some research, I understand that I have to always compare my character with 'object' within my code - and then check for collision calculations.
EG:
CheckCollisions(Player, Object);Which means I have to add in every single collide-able object within my scene, into my code:
CheckCollisions(Player, Building1);CheckCollisions(Player, Building2);CheckCollisions(Player, Trash);CheckCollisions(Player, Bench1);CheckCollisions(Player, Bench2);CheckCollisions(Player, Office1);CheckCollisions(Player, Office2);First off, my objects might not even be simple rects, they might be complex shapes. Secondly, some of them might have their own rotation. And thirdly, what happens if I have over tens of thousands of collie-able objects in my scene?
Ins't there an easier way to check for collisions within a HTML5/JS game?
Is this even possible? I'm really just looking for some advice and pointers.
Thanks
最满意答案1 - 您不需要为游戏中的每个对象编写一行代码。 将它们放入一个数组并循环遍历数组:
var collidableObjects = [Building1, Building2, Trash, Bench1, Bench2,Office1, Office2];var CheckAllCollisions = function() { for (var i=0; i<collidableObjects.length; i++) { CheckCollisions(Player, collidableObjects[i]); }}2 - 如果你有复杂的碰撞检查(即旋转的形状,多边形等),你可以先检查一个简单的矩形检查(或半径检查),并做更准确的检查,如果第一个返回true。
3 - 如果您计划拥有数万个对象,则应该拥有更智能的数据集合,例如按X坐标排序的对象,这样您就可以快速避免检查大于Player.X + 100且小于Player.X-100的所有内容(使用二分搜索),或将对象拆分成网格,然后检查播放器周围3x3网格单元格中的对象。
1 - you don't need to write a line of code for every object in your game. Put them into an array and loop over the array:
var collidableObjects = [Building1, Building2, Trash, Bench1, Bench2,Office1, Office2];var CheckAllCollisions = function() { for (var i=0; i<collidableObjects.length; i++) { CheckCollisions(Player, collidableObjects[i]); }}2 - if you have complicated collision check (ie rotated shape, polygon, etc) you can first check a simple rectangle check (or radius check) and do the more accurate check if the first one returns true.
3 - if you plan to have tens of thousands of objects you should have smarter data collections, for example objects sorted by X coordinate so you can quickly avoid checking everything larger than Player.X+100 and smaller than Player.X-100 (using binary search), or split the objects into a grid and just check the objects in the 3x3 grid cells around the player.
Player,CheckCollisions,中的,碰撞,电脑培训,计算机培训,IT培训"/> <meta name="