如何创建项目符号动画?(射击游戏)
How to create a bullet animation? (Shooter Game)
我正试图制作一款射击游戏,但我在子弹动画方面遇到了一些麻烦。每次单击时,都会创建一个新的项目符号对象并开始动画,但每次单击后,创建的项目符号都会消失,并且相同的项目符号会重新开始,这比以前的项目符号更快。所以我尝试在每次点击后创建新的项目符号。射击游戏的基本逻辑。这是我的代码:
function newBullet(x,y,angle,speed,id,type) {
this.x = x;
this.y = y;
this.speed = speed;
this.angle = angle;
this.radians = this.angle * Math.PI / 180;
this.id = id;
this.type = type;
this.drawBullet = drawBullet;
this.moveBullet = moveBullet;
}
function moveBullet() {
this.x = this.x + Math.cos(this.radians) * this.speed ;
this.y = this.y + Math.sin(this.radians) * this.speed;
ctx.drawImage( bulletImg, this.x, this.y);
}
function drawBullet() {
bullet = new newBullet(playerX,playerY,getAngle(),2,1,1);
bullets[bullets.length] = bullet;
setInterval("bullets[bullets.length - 1].moveBullet()", 25);
}
canvas.addEventListener("mousedown",drawBullet,false);
尝试在此处添加var
:
var bullet = new newBullet(playerX,playerY,getAngle(),2,1,1);
如果要向数组添加项目符号,则应使用push
。这将更新bullets.length
:
function drawBullet() {
var bullet = new newBullet(playerX,playerY,getAngle(),2,1,1);
bullets.push(bullet);
setInterval(bullets[bullets.length - 1].moveBullet, 25);
}
您创建的子弹消失的原因是:每次都替换bullets[0]
。新子弹比旧子弹快,因为bullets[0].moveBullet
在每25毫秒的间隔内被调用n次,其中n是你"创建"的子弹数。
相关文章:
- 如何设置html元素填充的动画
- 为网络游戏制作动画
- 三.js对象启动动画/游戏循环
- 游戏中的JavaScript精灵动画
- 石头、纸、剪刀游戏动画
- "背景”;使用javascript和html5的游戏动画
- 使用requestAnimationFrame制作游戏动画
- 画布层和游戏动画
- 如何创建项目符号动画?(射击游戏)
- HTML5画布的高度和宽度100%扭曲游戏动画
- 动画在这个画布游戏只工作一次
- HTML5画布游戏射击子弹到鼠标点
- JavaScript游戏;子弹阵列;当我射击时,所有的子弹从玩家所在的地方重新发射
- Webkit 3D CSS.像第一人称射击游戏一样旋转镜头
- HTML5/JavaScript游戏在制作动画时的严重滞后
- 截图flash游戏/动画,服务器端?(或客户端)
- 适合在Canvas中实现跳棋棋盘游戏的模型,考虑到动画
- 西蒙游戏javascript,我如何同步按钮的灯不踩在彼此与动画()和延迟()JQUERY
- 在这个JS纸牌游戏中添加一个纸牌翻转动画
- 如何在游戏动画中动态命名对象