我正在为我表弟做一个简单的神奇宝贝游戏。有点简单的皮卡丘从右边跑,灰烬在右边移动。
当我按空格键时只有一个问题我的pokébal从左到右飞行,但没有发现任何碰撞。
你能帮帮我吗? 代码如下:js:
function goPika() {
$("#pika").animate({ left : '5px' }, 2500);
setInterval(function(){
checkPosition();
}, 100);
function checkPosition() {
var positionPika = $("#pika").position().left;
}
}
function Throw() {
$("#bal").animate({ marginLeft : "96%" }, 1000);
setInterval(function(){
checkPositionBal();
}, 100);
function checkPositionBal(){
var positieBal = $("#bal").position().left;
var positieBalCol = (positionBal + 200);
console.log(positionBalCol);
}
};
function catch() {
if (positionBalCol == positionPika) {
console.log("collision");
}
}
答案 0 :(得分:0)
首先是:catch是javascript中的保留关键字,所以抛出......
然后,正如另一个答案所指出的,你的变量应该在你的函数之外可见(在顶部声明)。
然后通过“动画”移动球使您无法控制实际位移。 UI应该反映物理,而不是相反。
改为考虑
var positionBalCol = 0;
var dt = 30.0;
setInterval(function() {
positionBalCol += velocity * dt
}, dt);
鉴于您完成了以上所有操作,您仍然可以通过碰撞测试进行测试。
if (positionBalCol == positionPika)
可能永远不会使用浮点数,因为positionBalCol上的某些舍入会随着时间的推移而累积。
将条件更改为
if (Math.abs(positionBalCol == positionPika) < 1.0E-4) // or whatever suitable threshold
答案 1 :(得分:0)
您需要在函数之外声明变量,以便所有函数都可以访问它们。例如:
var positionBalCol,
positionPika;
function checkPosition() {
positionPika = $("#pika").position().left;
}
这会将positionPika
功能存储在checkPosition
之外。这样,您以后可以使用它将其与positionBalCol
进行比较。