簡體   English   中英

Javascript子彈功能/彈丸,2D游戲

[英]Javascript bullet function / projectile, 2D Game

我目前正在嘗試修改這段代碼,以便我的播放器能夠射擊。 我被卡在玩家實際上什么都不射擊的那一刻(盡管單擊時沒有畫出圖像,盡管沒有概述錯誤),導彈只需要在我的畫布上向上移動。 我希望此問題的任何答案也能提供某種形式的學習,因為我有興趣實際了解如何正確實施此方法,而只是需要某種快速修復。

setInterval調用moveBulletthis值將不是bullet,而是window 嘗試使用以下方法將該功能綁定到項目符號:

setInterval(bullets[bullets.length - 1].moveBullet.bind(bullets[bullets.length - 1]), 25);

有關更多信息,請參見此鏈接

編輯:更新更多修復程序:

您應該在瀏覽器中顯示控制台(大多數瀏覽器中為F12)。 這將列出您遇到的一些錯誤。

  • drawBullet使用未定義的xy 請改用spaceShip.xspaceShip.y
  • newBullet使用angle ,它在任何地方都沒有定義
  • newBullet嘗試使用movebullet函數。 應該是moveBullet
  • drawImage需要圖像,畫布或視頻元素-它不需要URL。

Edit(2):更多修復程序還有幾個問題需要修復。

  • 一個是您仍然沒有更改對ctx.drawImage的調用以傳遞圖像元素而不是URL。
  • 另一個是您的移動功能是將x和y值乘以速度。 這意味着,一旦子彈移動,它就離開了屏幕。
  • 第三個問題是render功能會更新整個背景,這意味着即使項目符號被繪制,項目符號也會立即被覆蓋。 您應該將實際的項目符號圖移動到渲染功能。

我已經用一些修復程序更新了您原始的JSFiddle,足以將其繪制(不刪除)。 你可以在這里找到它。 我還更改了它,使其每按一次空格鍵只能有1個項目符號(以幫助調試)。

此刻,我只是讓它停止繪制背景,以便您可以看到項目符號,但是您應該查看將項目符號繪制(而不是移動)移至渲染功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM