使HTML5画布中的重力工作两次
Make gravity in HTML5 canvas work twice
这是我的JSFiddle: http://jsfiddle.net/Au6br/13/
问题是,当我一直按下keydown.up
时,玩家会多次跳跃。我想要的是定义一个名为JumpCount
的变量,这样当玩家跳跃时,如果跳跃变量大于此值,则跳跃停止。
Character.prototype.Jump = function () { // Jumping
character.MaxJump += gravity;
character.y += character.MaxJump;
if (keydown.up) {
if (!character.jumping) {
character.jumping = true;
character.Pos = 4;
character.Row = 2;
character.h = 23;
character.MaxJump = -character.sp * 2.5;
}
}
if (character.y >= ch - character.h) { // if the character is under the bottom
character.y = ch - character.h;
character.jumping = false;
}
};
第一个问题是,当你不在地面上时,你可以跳。这是因为Onground
功能。
替换为
return this.y <= ch - this.h;
With this:
return this.y >= ch - this.h;
您还应该在Jump
中使用此函数以避免重复代码:
if (character.Onground()) { // if the character is under the bottom
character.y = ch - character.h;
character.jumping = false;
}
计数跳跃(我假设你想做两次跳跃)不能工作,只要你测试if(keydown.up)
。当你按下UP键时,这个值将在不止一帧内为真(取决于玩家按下它的持续时间),所以你永远无法正确计算跳跃的次数。必须在onkeydown
事件上绑定跳转,该事件只调用一次。之后,替换字符就很简单了。
我想这样做:
Character.prototype.Jump = function () {
character.MaxJump += gravity;
character.y += character.MaxJump;
if (keydown.up) {
if (character.CurrentJumps < character.JumpCount) {
character.CurrentJumps++
character.Pos = 4;
character.Row = 2;
character.h = 23;
character.MaxJump = -character.sp * 2.5;
}
}
if (character.y >= ch - character.h) {
character.y = ch - character.h;
character.CurrentJumps = 0
}
};
Were JumpCount是最大跳跃数,currentjump是当前完成的跳跃数
和一个设置为双跳的示例:
character.JumpCount = 2 // 2 Jumps
添加一个名为jumpCount
的变量或每次字符跳跃时增加的变量如何?只有当jumpCount
小于或等于你希望角色能够跳跃的次数时,才允许角色跳跃。然后在玩家触地时将jumpCount
设置为0。这也摆脱了你的jumping
变量,因为这将意味着与jumpCount === 0
相同的事情。
相关文章:
- button.单击两次删除附加操作后不工作
- JavaScript onclick在IE 9中工作两次,然后停止
- JQuery脚本没有'Don’我不能工作两次
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- 当audiojs加载两次时,audiojs进度条不工作
- rails4-javascript文件需要调用两次才能工作
- 新的回顾;I don’在(基本上)同一页上做两次工作
- 为什么我的内容在从 1.5.26 迁移后两次可见,而 JavaScript 在 Joomla 3.x 上无法正常工作
- 滚动时加载更多 滚动速度时一次工作两次
- Jquery Click 事件工作两次
- Javascript 在两次 HTML 注入后停止工作
- Jquery点击功能只工作两次
- 向同一按钮添加两次单击事件只能工作一次
- 为什么这个Javascript图表不会工作两次
- slideDown功能需要两次点击才能工作
- Cakephp表单必须提交两次才能工作
- 为什么我必须点击两次按钮才能工作,以及我如何解决这个问题
- jQuery单击工作一次,而不是两次
- jQuery$.post()请求没有'除非跑两次,否则无法工作