结肠炎检测
Colission detection
我正在为我的表弟制作一个简单的精灵游戏。这有点简单,皮卡丘从右边跑过来,灰烬在右边移动。
只有一个问题,当我按下空格键时,我的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");
}
}
您需要在函数之外声明变量,以便所有函数都可以访问这些变量。例如:
var positionBalCol,
positionPika;
function checkPosition() {
positionPika = $("#pika").position().left;
}
这将positionPika
存储在checkPosition
函数之外。这样,以后可以使用它将其与positionBalCol
进行比较。
第一件事是:catch是javascript中的一个保留关键字,throw也是。。。
然后,正如另一个答案所指出的,您的变量应该在函数之外可见(在顶部声明)。
然后通过"animate"移动球将无法控制实际位移。UI应该反映物理,而不是相反。
考虑
var positionBalCol = 0;
var dt = 30.0;
setInterval(function() {
positionBalCol += velocity * dt
}, dt);
如果你做了以上所有的事情,你的碰撞测试仍然会有问题。
if (positionBalCol == positionPika)
使用浮点数可能永远不会是真的,因为位置BalCol会随着时间的推移而累积。
将条件更改为
if (Math.abs(positionBalCol == positionPika) < 1.0E-4) // or whatever suitable threshold
相关文章:
- 如何检测是否有溢出
- 如何检测用于WebGL的专用或集成显卡
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- 如何使用密码检测网络中的状态连接
- 使用JavaScript检测Flash
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测个位数整数时正在转换毫秒
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 动态插入的表:JQuery未检测到最后一行
- 检测页面上某个元素中选择(突出显示)或单击的内容
- jQuery检测浏览器是否支持Zoom
- 检测iframe是否跨域的愚蠢方法
- 检测图像分辨率
- 如何检测第三方广告服务器请求
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 当没有文本输入聚焦时检测空格键按下
- 正在检测导航到<a name=“;最新主题”></a>
- 如何检测重叠元素下的单击
- 结肠炎检测