【发布时间】:2023-01-25 04:35:32
【问题描述】:
好的,我正在使用 Phaser 3 库构建一个小游戏。在此游戏中,用户必须将游戏元素放置在屏幕上的特定位置。如果所有元素都在正确的位置,则应添加一个点。如果他们不是,游戏将重置为之前的状态。
我有底层代码:
首先获取对象的Bounds
var bounds_po_orderid = this.answer_element_po_orderid.getBounds();
var bounds_po_eventid = this.answer_element_po_eventid.getBounds();
var bounds_po_orderdate = this.answer_element_po_orderdate.getBounds();
...............
其次比较不同的边界是否相交:
var overl_answerzone_one_bounds_po_orderid = Phaser.Geom.Intersects.RectangleToRectangle(bounds_po_orderid, bounds_answerzone_one);
var overl_answerzone_one_bounds_po_eventid = Phaser.Geom.Intersects.RectangleToRectangle(bounds_po_eventid, bounds_answerzone_one);
var overl_answerzone_one_bounds_po_orderdate = Phaser.Geom.Intersects.RectangleToRectangle(bounds_po_orderdate, bounds_answerzone_one);
var overl_answerzone_one_bounds_po_line_purchaseorderid = Phaser.Geom.Intersects.RectangleToRectangle(bounds_po_line_purchaseorderid, bounds_answerzone_one);
并检查按下按钮时的真/假值:
this.input.on("gameobjectdown", function (pointer, gameObject)
{
if (gameObject.name == "check_answer_button")
{
if (overl_answerzone_one_bounds_po_orderid === true &&
overl_answerzone_one_bounds_po_eventid === false &&
overl_answerzone_one_bounds_po_orderdate === false &&
overl_answerzone_one_bounds_po_line_purchaseorderid === false &&
overl_answerzone_one_bounds_po_line_orderlineid === false
)
{
this.count = 1
eventsCenter.emit('update-count', this.count)
}
else
{
// reset all the controls
}
上面的代码不起作用。出于某种原因,当第一个元素位于正确的位置时,其余元素的放置位置无关紧要,它会说可以触发 if 语句。我尝试用“==”替换“===”。没有结果。所以基本上我不知道我做错了什么。
【问题讨论】:
-
在
update函数中,您在哪里检查交集?gameobjectdown事件监听器在create函数中设置在哪里?或者更好的是,您可以共享更多代码,精简到最基本的代码吗?
标签: javascript if-statement boolean phaser-framework