Update to Phaser3 adding object pooling and using ECMA Script 6 conventions

(三)NINJA PIGGY 无敌忍者小猪让飞镖进行旋转Projectile rotate
无敌忍者小猪让飞镖进行旋转Projectile rotate
Continue reading »Update to Phaser3 adding object pooling and using ECMA Script 6 conventions
本想按照PHASER的Canvas来创建HTML DOM元素,但this.add.dom 一直提示错误,无奈直接用HTML5的语法来创建DOM元素,然后在Phaser内获取该DOM元素,也不用再使用第三方的Phaser Html Input插件Plugin,还是挺方便快捷的。
Phaser 自带的Arcade虽然易用,但复杂的物理碰撞明显就不够用了,于是Matter等物理引擎还是不得不学的,以下是Matter物理体碰撞的一个插件,它省去了我们判别两个物理体相撞后哪个是gameObjectA和gameObjectB,实在是好用又省心 …
// 创建racing car
var lemming = this.add.follower(curve, 50, 300, ‘racecar’).setScale(0.3);
// 让 racing car 跟随path
lemming.startFollow({
duration: 10000,
yoyo: false,
repeat: 0,
rotateToPath: true,
verticalAdjust: true
});
EC6:class Brain extends Phaser.GameObjects.Sprite {}
EC5:var Bunny = new Phaser.Class({Extends:Phaser.GameObjects.Sprite,})
空格键:轻按:跳低 ,长按:跳高
键盘:–> 向右 , <-- 向左
使用sleep和wake方法的好处:
1.可以彻底让scene场景彻底休眠
2.update function不会再运行
3.同时会暂停场景内的Timer事件
三角函数 得出鱼要旋转的角度
this.fish.rotation = Math.atan2(pointer.y – this.fish.y, pointer.x – this.fish.x);
判断鱼是否需要反转:点击的位置和鱼头相同=>不反转
this.fish.flipY = false;
判断鱼是否需要反转:点击的位置和鱼头相反=>反转
this.fish.flipY = true;
使用对象池 Object Pool产生炸弹,首先创建一个对象组 this.exploadGroup = this.add.group();
然后用对象组的.get重复应用对象池而不是用.create,this.exploadGroup.get(x,y,’explode’);
最后销毁的时候不是用.destory(),而是用 this.exploadGroup.killAndHide(singleExplode);
从sceneA通过 ths.events.emit时传值到sceneB时有个需要特别注的事项就是,得把sceneB的 active设为 ture,否则因为 sceneB还未激活,是监听不到 events.on事件的!!!
坑:
在config内不要把 width 设为 window.innnerWidth
在config内不要把 width 设为 window.innnerWidth
在config内不要把 width 设为 window.innnerWidth
重要的事情得说三遍…
一、精灵的反弹力physicsBody?.restitution = 1
二、精灵加入粒子特效SKEmitterNode