我正在尝试为我正在开发的平台游戏中的角色制作文本。下面是我的代码:
create方法中的代码:
this.dialog = this.add.text(880, 810, ' ', { font: '30px Futura', fill: '#FFFFFF' }).setOrigin(0.5);
update方法中的代码:
if ((this.checkCollision(this.p1, this.goodLamb) || this.checkCollision(this.p1, this.stiches)) && (this.has("spool") && this.has("needleOne") && this.has("needleTwo")) && this.keyT.isDown) {
console.log("spool: " + this.has("spool") + " needleOne: " + this.has("needleOne") + " needleTwo: " + this.has("needleTwo"));
this.dialog.setText('Oh, thanks Peef! Now we can fix Stiches!');
}
else if ((this.checkCollision(this.p1, this.goodLamb) || this.checkCollision(this.p1, this.stiches)) && (!(this.has("spool")) || !(this.has("needleOne")) || !(this.has("needleTwo"))) && this.keyT.isDown){
console.log("spool: " + this.has("spool") + " needleOne: " + this.has("needleOne") + " needleTwo: " + this.has("needleTwo"));
this.dialog.setText('Peef! Stiches ripped herself again! Can you get the sewing supplies?');
}
else{
this.dialog.setText('');
}
请注意,this.p1是播放器,this.goodlamb和this.stiches是字符,字符串spool、needleOne和needleTwo表示投资库中的项目。
目前的代码只在玩家与npc发生冲突并按住T按钮时显示文本,我通常使用T按钮进行交互,但按住T按钮查看文本并不是我想要的。
我的目标是这样的:玩家与npc发生碰撞,按一下按钮,显示一行文字,阅读完后再按一次按钮,当前行消失,出现另一行文字,如此反复,直到没有行文字。
我不知道该怎么做。有什么建议吗?
如果有帮助的话,我在VSCode中使用Phaser 3,使用街机物理。
1条答案
按热度按时间bd1hkmkf1#
简单的解决方案是创建为
Text - GameObject
并在两者之间交替。只需要一个简单的模运算,就像
currentLine % 2 == 0
,然后根据结果切换Text - GameObject
。文字的颜色只是,以显示有2个不同的
Text-GameObjects
。