如何解决Phaser我的Phaser.Physics.Arcade.Sprite中缺少一些方法
我正在尝试使用Phaser 3游戏引擎来构建游戏。我正在使用TypeScript并为每个实体编写类。
我从背景中的一些乌云开始。我开始删除拱廊重力,并为风添加了velocityX。我的课看起来像这样
class Cloud extends Phaser.Physics.Arcade.Sprite {
constructor(scene,x,y) {
super(scene,y,'cloud');
this.setGravityY(0);
return this;
}
static preload(scene) {
scene.load.image('cloud',cloudAsset);
}
}
但是我遇到类型错误
未捕获的TypeError:无法读取null的属性'gravity'
这对我来说毫无意义,因为方法setGravityY
是扩展的,您可以在下面的屏幕快照中看到它。
那为什么body
是不确定的?我认为扩展Phaser.Physics.Arcade.Sprite应该具有主体。就像这里的文档一样
解决方法
您认为Arcade Sprite应该具有主体是正确的。但是场景的物理原理还不知道这个游戏对象。因此,您必须像这样将其添加到场景物理中:
class Cloud extends Phaser.Physics.Arcade.Sprite {
constructor(scene,x,y) {
super(scene,y,'cloud');
scene.physics.add.existing(this); //here you add this existing sprite object to scene's physics
this.setGravityY(0);
return this;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。