我是phaser的新手,现在我正在使用phaser v.2.0.7.我想要做的是使sprite处理触摸事件.
如何附加onTap到精灵对象?
我知道触摸事件是可能的sprite_obj.events.onInputDown,但我仍然使用onInputUp,因为当有一个弹出/模态(警报)之后触发时onInputDown,你需要在此之后单击两次以使事件监听器再次工作.(我对此问题的个人解决方法是使用inInputUp.)
我尝试的另一件事是添加onTap我的画布对象,canvas.input.onTap.add我认为这不适合我的目标.是的,它现在可以处理触摸事件,但问题是我想将触摸事件仅限制在画布上的精灵图像而不是整个画布.
有人能帮我吗.谢谢.
我使用Phaser.js开发了一款游戏应用程序.我把代码放入Ionic空白启动应用程序.因此,基本上使用Ionic应用程序渲染视图,然后Phaser通过id获取div并显示游戏.
它是一个简单的飞扬的鸟类克隆.它的工作正常,但块运动有点不稳定(好像它们在颤抖).由于Phaser使用WebGL,它可能是缓慢渲染的原因还是由于离子框架(/ angularjs)?
我是否应该使用其他一些工具来构建游戏应用程序?
提前致谢.
你可以在这里查看代码:https://github.com/vamshisuram/ionic-flappybird-clone.git 我将所有代码上传到Git.所以,我想你可以直接在你的手机上安装平台/ ant-build/Hello-Cordova-debug.apk并进行测试.或者再次尝试构建并安装.
我在用户本地服务器上相当新.我正在使用http-server,它是Node的一个软件包.我正在使用它来使用Phaser库托管HTML5游戏.我有在游戏中使用的图像资源,有时我会更新这些资产.当我这样做时,对图像的更改不会反映在游戏中.我已经尝试重新启动服务器,但这没有帮助.他们通常需要一些时间来更新,大约一个小时.有什么想法会出错吗?
我有一个图像和一些我要显示/隐藏的文字:
overlay = this.game.add.image( 0, 0, this.custom_texture.generateTexture() );
overlay_text = this.game.add.text( 0, 0, 'TESTING 123', style );
Run Code Online (Sandbox Code Playgroud)
我尝试了这个destroy()功能,但是我无法将它们带回来,而且如果我只想隐藏和显示它们,我认为没有必要销毁它们.
我想知道phaser.io是否支持3d甚至一点点.我没有计划建立一个3D游戏,但希望我的主角有3D动画......就像翻转一样.
或者甚至更好地制作更符合我口味的拼图游戏.
我试过谷歌搜索,并没有发现它支持3D的迹象.但pixijs,它的基础是使用webgl.
至少即使2d可以使它2d.5或其他东西
我是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但没有区别.我想没有瓷砖被"杀死".
除此之外,我希望在世界中间生成我的角色,这是生成的草地图的中间.但是,我也很难做到这一点.我认为,为了实现这一目标,我应该使用以下概念,尽管不能:
总结: 使用以下用于生成切片的循环方法,如何在跟随我的角色的相机移动到另一个区域时生成无限/几乎无限的地图?除此之外,在我生成的草地图中间始终生成角色的正确方法是什么,以及相机从角色的起点开始?
我将非常感谢他们的帮助,并希望这对于处于类似情况的人来说可能是有价值的.对于任何额外的信息,只需询问,如果您想要按特定数字生成图块的功能,我很乐意发布.对不起任何语言错误.
非常感谢你.
编辑:
通过将X和Y设置为(大小/宽度)和(大小/高度),我能够始终在草中间生成我的角色.大小是px中X和Y的度量.
我输入:
npm test
Run Code Online (Sandbox Code Playgroud)
我得到:
有趣的是,导入语句在 BootScene.test.js 文件中有效,但在导入的文件中不起作用。
我关注的是在 JEst 下不起作用的导入语句。所以我想这可能与 jest 使用的 Ecma Script 版本有关。所以我尝试了这个解决方案,但错误仍然存在。
这是这个问题的回购/分支。
当我输入npm start. 一切都进行得很快,没有任何错误。
我正在修补 Phaser 游戏引擎。我已经弄清楚如何为精灵着色,所以下一步是给它一个随机颜色。我将如何使用枚举来做到这一点?
var colors = {
RED: 0xff0000,
GREEN: 0x00ff00,
BLUE: 0x0000ff
}
logo.tint = colors[Math.floor(Math.random() * colors.length)];
Run Code Online (Sandbox Code Playgroud) 我在 Chrome 中尝试自动播放视频时遇到错误,内容为: DOMException: play() failed because the user didn't interact with the document first.
对于“普通”页面,有一个解决方案:
var promise = document.querySelector('video').play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay started!
}).catch(error => {
// Autoplay was prevented.
// Show a "Play" button so that user can start playback.
});
}
Run Code Online (Sandbox Code Playgroud)
但是我使用 Phaser 框架Video对象播放视频,该对象不返回承诺,因此我需要确定用户已与before尝试播放视频的页面进行了交互。有什么解决办法吗?
我正在 Phaser 3 中制作游戏,但我似乎无法找到如何将分数从 GameScene 传递到 GameOverScene。
phaser-framework ×10
javascript ×6
angularjs ×1
babeljs ×1
enums ×1
html5 ×1
html5-video ×1
httpserver ×1
isometric ×1
jestjs ×1
mobile ×1
node.js ×1
touch ×1
webgl ×1