Tag: 碰撞检测

Node.js服务器上的3D模型

我正在做一个3D游戏, 在这里和这里我被告知应该总是在服务器端执行碰撞检测。 现在,问题是,我不知道如何! 在平面上的玩家之间的碰撞很容易,因为玩家是用一个圆柱体表示的,但是当地图本身是一个带有小丘的模型等等时,我该如何进行碰撞检测呢? 有可能以某种方式导入Node.js服务器上的3D模型? 然后说,我有模型导入,是否有一些碰撞检测库,或者我必须自己做math? (我最后的手段是将模型转换为JSON (模型已经转换为JSON),然后读取所有的顶点,但这将是一个痛苦。) 模型是在Blender中制作的,可以转换为.obj,.dae或.js(JSON) (这是我目前使用的)。 如果没有这样的模块,那么模型就可以导入并且碰撞被检查,我想我可以自己做。 在这种情况下,请提供一些提示,或者进一步阅读如何testing某个点是否与某些顶点定义的对象发生碰撞。 编辑: “地图”将有树木和房屋的对象。 我在想,甚至可能是洞穴。 它也将有山和什么不,但一个高度图是不可能的,我想。

如何在没有窗口的情况下运行Phaser引擎?

我目前正在使用HTML5框架Phaser创build一个多人游戏。 这是一个僵尸在地图上产生的游戏,玩家必须射杀他们。 僵尸的目标是最接近他们的玩家。 目前,我在devise策略上遇到了一个问题。 由于运动跟踪,我不确定这种types的游戏是否可以使用Phaser。 目前,客户端正在处理所有的玩家移动,所以无论何时玩家移动,它都会将其广播到服务器,并将其发送给所有其他客户端。 不过,我想僵尸和子弹是由服务器专门控制的。 服务器然后更新每个客户端与每个僵尸的速度和他们的当前位置。 我的推理是,任何不是玩家input的东西都应该由服务器来计算。 这样可以防止两个客户说僵尸在不同时间死亡,然后尝试彼此交stream,在不同地点同时发射子弹,或者僵尸在客户之间的不同时间产卵。 这是一个僵尸类的例子: function Zombie(game, data){ this.game = game; this.id = data.id; Phaser.Sprite.call(this, this.game, data.x, data.y, 'zombie'); this.anchor.setTo(0.5,0.5); this.animations.add('right', [0,1,2,3], 7, true); this.animations.add('left', [4,5,6,7], 7, true); this.game.physics.arcade.enable(this); this.body.collideWorldBounds = true; this.health = data.health; this.maxHealth = data.maxHealth; this.speed = data.speed; this.target = this.game.player; this.waiting = 100; this.name = […]