最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

HTML5

旗下网站admin40浏览0评论

HTML5

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="

发布评论

评论列表(0)

  1. 暂无评论