小编Dio*_*nha的帖子

2D软体:Gelly和可塑?

我正在使用Matter.js物理来创建柔体.我能够创建这样的身体:

thing.js柔软的身体

但是我不确定这是否是我想要的"软体".确实,这个身体并不是完全僵硬的,并且当它碰撞并被拖拽时具有那种有弹性的感觉.我正在寻找一个与凝胶有相似之处的身体.此图像可能在视觉上有助于解释概念:

想-胶状体

我想知道如何制作这些类型的尸体.它与as matter.js软体相同,但具有非常特殊的属性类型吗?我只能让身体变得僵硬,而不是像我希望的那样可塑造和圆形.

我也很有兴趣通过游戏中的相互作用操纵物理体,这会增加或减少物理体的大小,这使我再次得出结论,我想要的身体类型必须是相当可塑的.

may.js可以处理这个还是我必须更改物理引擎?任何接近这个的解决方案?

注意:我使用Phaser.js作为一些游戏中的组件,但是物理操作的物理问题是物理操作,因为我相信Phaser集成的物理学不能模拟这种类型的复杂体.

谢谢

编辑:它非常类似于这个Box2d:滚动软体球.我想我只需要使用js引擎.有没有?

javascript physics game-physics phaser-framework matterjs

14
推荐指数
1
解决办法
888
查看次数

相位池和相机定位上的对象池(等距平铺)

我是Phaser的新手,我现在很难在相位器等距插件的帮助下生成一个tilemap.我也很难理解与Phaser世界,游戏和相机相关的一些概念,这些概念使得更正确地生成tilemap的一部分.我实际上已经注意到这个问题似乎是Phaser新手的障碍,就像我自己一样,正确解释它肯定有助于对抗这一点.

谈到此事:

我使用单个草精灵使用for循环生成了一个tilemap .for循环工作正常,我还实现了一个函数,我可以指定我想要生成的tile数.

{
  spawnBasicTiles: function(half_tile_width, half_tile_height, size_x, size_y) {
    var tile;
    for(var xx = 0; xx < size_x; xx += half_tile_width) {
      for(var yy = 0; yy < size_y; yy += half_tile_height) {
        tile = game.add.isoSprite(xx, yy, 0, 'tile', 0, tiles_group);
        tile.checkWorldBounds = true;
        tile.outOfBoundsKill = true;
        tile.anchor.set(0.5, 0);
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 因此,生成静态草砖的过程不是问题.问题,以及我试图让对象池正常工作的原因之一是当磁贴数量超过80时,这对游戏性能产生了巨大影响.由于我的目标是制作巨大的自动生成地图,这些地图根据玩家角色位置进行渲染,因此对象池是必不可少的.我已经为这些图块创建了一个组,并添加了我认为将不需要渲染的图块(物理,世界边界......)所需的属性.然而,经过多次尝试,我得出结论,即使是超出界限的瓷砖仍然会产生.我还使用了另一个属性而不是add.isoSprite来生成tile,这是.create但没有区别.我想没有瓷砖被"杀死".

  • 这个过程是否正确?我需要做什么才能生成出现在相机上的图块(我假设相机是可见的游戏矩形),并在角色移动到另一个区域时生成剩下的图片,假设相机已经跟踪了角色的移动?

除此之外,我希望在世界中间生成我的角色,这是生成的草地图的中间.但是,我也很难做到这一点.我认为,为了实现这一目标,我应该使用以下概念,尽管不能:

  • .anchor.set()
  • game.world.setBounds(特别是这一个...它似乎没有设置我订购的地方);
  • Phaser.game(我将它的大小设置为我的window.width和window.height,这没有太大麻烦...)

总结: 使用以下用于生成切片的循环方法,如何在跟随我的角色的相机移动到另一个区域时生成无限/几乎无限的地图?除此之外,在我生成的草地图中间始终生成角色的正确方法是什么,以及相机从角色的起点开始?

我将非常感谢他们的帮助,并希望这对于处于类似情况的人来说可能是有价值的.对于任何额外的信息,只需询问,如果您想要按特定数字生成图块的功能,我很乐意发布.对不起任何语言错误.

非常感谢你.

编辑:

通过将X和Y设置为(大小/宽度)和(大小/高度),我能够始终在草中间生成我的角色.大小是px中X和Y的度量.

javascript isometric phaser-framework

10
推荐指数
0
解决办法
410
查看次数

移相器是否能够进行大型多人游戏?

新手在这里.我正在使用phaser,特别是等距插件.

我想知道在处理实时多重连接方面是否有可能使用类似于agar.io的移相器创建游戏,生成一个包含大约300名玩家的巨大地图,所有这一切都没有在游戏中产生太大影响性能.我真的不知道如何处理多人游戏部分(可能是套接字,node.js),因为它可以很好地工作.至于生成一张非常大的地图,我也很空白.

  • 在移相器中,是否有可能创建一个等距型游戏来处理当用户到达可见"地图"边缘时生成的多个实时多人游戏和巨型地图?怎么样?
  • 如果没有,我应该选择什么(js和其他应用程序中的游戏引擎)才能实现我想要的目标?

javascript isometric phaser-framework

6
推荐指数
2
解决办法
2790
查看次数

删除了HTML元素.什么是最简单的方法?

在我的主页面中,我有一个简单的表格.我已经做到了这一点,当用户点击"提交"按钮时,我将表单数据发送到服务器端,并且在提交后我也使用Jquery删除表单.但是,我希望有一种方法可以让我在删除表单后单击一个按钮时,它会再次显示与删除之前完全相同的内容.

当我单击表单提交按钮时,我不希望表单不可见; 我希望从页面中删除表单.我每次删除它时都必须创建一个新表单,与删除它一样,还是有办法在单击"恢复"按钮时将其恢复?

以防万一,我使用JADE渲染其他东西......我不确定是否需要它.对不起任何错误,我是编程新手.如果需要,我可以提供更多信息.

javascript forms jquery

1
推荐指数
1
解决办法
106
查看次数

单击更改属性上的Html; 重新回到原始状态

我试图在单击时更改span元素的属性,例如边框和背景颜色.我还想将元素属性重置为它们曾经是什么,再次单击它.但是我无法正确地做到这一点.我接受任何类型的解决方案,包括Jquery.实际上我的代码目前是Jquery:

$('.clickable_span').click(function() {

  if($(this).attr('border') == undefined || $(this).attr('border') == false) {

    $(this).css('background', 'white');
    $(this).css('border', '1px solid black');

  }

  else if($(this).attr('border') == true) {

       $(this).css('background', 'dimgrey');
       $(this).css('border', 'none');

  }

});
Run Code Online (Sandbox Code Playgroud)

它不断进入第一个if语句(我console.logged),因此它改变了元素的方面,但没有将其重置回原始状态.代码有什么问题?为什么在将该属性赋予元素之后,$(this).attr('border')仍等于undefined?(差异是可见的).

html javascript jquery click

0
推荐指数
1
解决办法
497
查看次数