回答編集履歴

2

回答が間違っていたので修正

2023/05/16 03:14

投稿

vann_2921
vann_2921

スコア190

test CHANGED
@@ -1,4 +1,9 @@
1
- shotのx,y座標がつねにsizeX,sizeYから変わらないので動きません。
1
+ ~~shotのx,y座標がつねにsizeX,sizeYから変わらないので動きません。~~
2
- 縦方向に動かしたければshot.y+=sizeYにすればとりあえず動くと思います。
2
+ ~~縦方向に動かしたければshot.y+=sizeYにすればとりあえず動くと思います。~~
3
3
 
4
- ただし、初めてzが押されたときのみ初期化をしないと無限にy方向に加算されるので一度画面外に行くと二度と戻って来なくなります。
4
+ ~~ただし、初めてzが押されたときのみ初期化をしないと無限にy方向に加算されるので一度画面外に行くと二度と戻って来なくなります。~~
5
+
6
+ スコープの問題みたいですね。
7
+ shotを毎回作り直しているのでsizeY-20で固定されているようです。
8
+ shotは関数の外側で管理して有効期限を伸ばすさないといけないです。
9
+ 具体的にはshotのポインタを関数の外側に置いてzが初めて押されたならnewして、弾が画面外に行ったらdeleteするような処理で実現できると思います。

1

追記しました

2023/05/16 01:17

投稿

vann_2921
vann_2921

スコア190

test CHANGED
@@ -1,2 +1,4 @@
1
1
  shotのx,y座標がつねにsizeX,sizeYから変わらないので動きません。
2
2
  縦方向に動かしたければshot.y+=sizeYにすればとりあえず動くと思います。
3
+
4
+ ただし、初めてzが押されたときのみ初期化をしないと無限にy方向に加算されるので一度画面外に行くと二度と戻って来なくなります。