推 ian90911: 請貼code 06/24 16:43
推 devil115789: 感覺是因為dx會被清掉 所以dx永遠都是8這樣 我猜的 06/24 17:21
→ ssccg: 子彈X不是=飛機X+...,是等於發射時的飛機X+... 06/24 18:14
→ akccakcctw: 按下空白鍵時取得當時飛機位置,子彈和飛機不要用相 06/24 18:25
→ akccakcctw: 對位置 06/24 18:25
謝謝大家給的建議
昨天想了很久還是想不出來該如何解
這邊貼出子彈的code
function draw(){
if (fireBullet == true){ //當按下空白鍵時會啟動
var bulletX = planeX + 100 + dx;
var bulletY = planeY + 55;
ctx.drawImage(bulletImg, bulletX, bulletY , 30, 15);
dx=dx+5;
}
}
setInterval(draw, 10);
如果想要取得按空白鍵當時飛機位置又不用到planeX 跟planeY該如何設定呢?
謝謝
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 01:07:41
推 ccvs: 邏輯怪怪的 dx的增減要獨立出來吧 06/25 09:48
→ ccvs: 你現在是按下空白鍵 dx+=5 只會run一次啊 06/25 09:50
dx=dx+5我放裡面跑跟外面跑的結果都一樣耶...
子彈是如預期的速度往前的
但是現在在想要怎麼按空白鍵的瞬間從飛機上發射又不用用到飛機的座標
推 xdraculax: 只有擊發時初始座標參考飛機,之後移動都參考自己座標 06/25 10:38
→ xdraculax: ,或是把子彈改成雷射(誤 06/25 10:38
→ bibo9901: 樓上XDD 06/25 12:00
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 12:12:24
推 ccvs: 比較普遍的方法是寫一個子彈的物件 內建迴圈去增加dx 06/25 13:17
→ ccvs: 按下空白鍵時新建子彈物件 06/25 13:17
可是該如何設定子彈射出位置跟飛機一樣又不去用到飛機的座標呢?
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 13:36:09
推 ccvs: 你指的是子彈初始位置吧 draw的方法一樣在子彈的物件裡啊 06/25 15:47
→ ccvs: 把飛機當前的座標傳進來當初始位置 06/25 15:47
有沒有什麼方法是bulletX, Y第一次用planeX, Y當起始點
後面行進就變成bulletY = bulletY//Y軸不變, bulletX = bulletX+dx//X軸加速前進
如果是這樣code該如何改呢?
另外要如何每次按都觸發一個新的子彈呢?
謝謝幫忙
※ 編輯: yenpaul (142.129.18.133), 06/25/2016 16:08:47
推 Hevak: 子彈是直線運動的話,你的每一個子彈物件都包含子彈座標X和 06/27 00:47
→ Hevak: Y,還有速度X和Y(射出時先算出來),等四項屬性的話,只要se 06/27 00:47
→ Hevak: tInterval選取所有子彈,各自加各自各自的速度XY就好了吧, 06/27 00:47
→ Hevak: 不需要去顧慮飛機的位置在哪 06/27 00:47