HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0204
みゅうクリックしたままマウスを動かした方向へ自機を動かしたい5解決


みゅう

リンク

2014/2/4(Tue) 01:20:46|NO.59649

はじめまして。

HSP3DishでAndroid用のシューティングゲームを作り始めたのですが、
自分のプログラム知識が未熟なため、自機の動かし方で、
自分が希望する操作方法を実現できなくて困っています。
分かる方がいらっしゃいましたら教えてください。

自分が希望する自機の操作方法は、マウス操作(Android上では指操作)で
画面のどの位置でもいいのでクリック(Android上ではタッチ)したまま
マウス(Android上では指)を動かせば、動かした方向に自機を動くように
プログラムをしたいです。

HSP3Dishの本に載っていたマウス操作(Android上では指操作)で
自機を操作するサンプルのシューティングゲームや、
ネット上で紹介されているマウス操作(Android上では指操作)で
自機を操作するサンプルプログラムですと、
自機がマウスカーソル(Android上では指)で
クリック(Android上ではタッチ)した位置に近づくように動くか、
もしくは、クリック(Android上ではタッチ)した位置に
自機が表示されて動くかの2パターンのみでした。
ネット上をかなり検索で探したのですが、この2パターンの
プログラム例しかどうしても見つかりませんでした。

■マウス操作(Android上では指操作)による自機の動きのパターン
 パターン1.自機がマウスカーソルをクリックした位置に近づくように動く
 パターン2.自機がマウスカーソルをクリックした位置に自機が表示されて動く


自分が希望する自機の動かし方は、
画面上のどこの位置でもクリック(Android上ではタッチ)したまま
マウス(Android上では指)を動かせば、動かした方向に自機を動くように
プログラムをしたいのです。この方が圧倒的に自機が動かし易く、
弾幕シューティングでもミスなく操作し易いためです。

■自分が希望する自機の動きのパターン
 画面上のどこでもクリック(Android上ではタッチ)したまま
マウス(Android上では指)を動かせば、動かした方向に自機が動く


GooglePlayで無料のAndroid用のシューティングゲームを
いくつかダウンロードして遊んでみると、
前述のパターン1とパターン2の自機の動きのタイプの
シューティングが多いものの、自分が希望する動きのシューティングも
少なからず存在しています。(弾幕バラッドなど)

やっぱり圧倒的に操作しやすいのが、
画面上のどこの位置でもタッチしたまま指を動かせば、
動かした方向に自機を動くタイプなので、
なんとかこの動きを実現できるようにプログラムを組みたいのですが、
どうしても上手くいきません。

自分なりに考えたのは、
例えば、自機を64x64ドットサイズで作成。
表示画面サイズが320x280ドットだとします。

そして、表示画面サイズと同じ320x280の中心当りに
64x64ドットサイズの自機画像を置き、その周りを透過処理して、
1枚の画像を実際に使用する自機画像として作成し、
当り判定の部分だけ、実際に透過されていない、見えている
自機の大きさにして、マウスをクリックして動かすように
プログラムを記述したら、自分の希望する操作っぽく動くのですが、
表示画面サイズの自機画像データを用意してる時点で
おかしいですよね…。

どのようにプログラムを記述したら良いのか分からないため、
どなたか分かる方がいましたら教えてください。
宜しくお願い致します。



この記事に返信する


mono

リンク

2014/2/4(Tue) 17:26:41|NO.59659

>マウス(Android上では指)を動かせば、動かした方向に自機を動くように
ここが具体的でないとよくわからないです
マウスの動きをそのままトレースするだけなら以下ですが
>圧倒的に操作しやすい
とは思えないので違うかも。

screen 0,320,280 px=128 py=108 color 255 boxf px,py,px+64,py+64 repeat getkey k,1 if k{ if oldstat==0{ disx=px-mousex disy=py-mousey oldstat=1 } px=disx+mousex py=disy+mousey }else{ oldstat=0 } redraw 0 color 255,255,255 boxf color 255 boxf px,py,px+64,py+64 redraw 1 await 16 loop



check

リンク

2014/2/4(Tue) 21:19:02|NO.59667

スレ主が言っているのは、自機の場所とは関係なく、
指をスライドさせればその方向へ動くというものだと思う。



mono

リンク

2014/2/4(Tue) 21:53:42|NO.59670

>スレ主が言っているのは、自機の場所とは関係なく、
>指をスライドさせればその方向へ動くというものだと思う。
それは質問者がほぼ同様の文章をかいてるからわかります。
>指をスライドさせればその方向へ動くというものだと思う。
ここが具体的でないとよくわからないですといってるんですが



check

リンク

2014/2/4(Tue) 22:05:01|NO.59676

なるほど。

質問したのは俺ではないからあくまで推測でしかないが、
クリックする→スライドする→クリック解除の動作の流れで、
クリックした点から解除された点までのベクトルを求めて、
それで求めたベクトルを使って自機をスムーズに移動させたいとか、
そういうことだと俺は思った。



みゅう

リンク

2014/2/4(Tue) 23:24:58|NO.59683

こんばんは。
質問者のみゅうです。


>>mono様
 mono様、ご返信、どうもありがとうございます。
 mono様のサンプルブログラム、大変参考になりました。m(_ _ m)ペコリ
 まさに自分が希望していた通りの動きです。

 さっそく、boxfの個所を実際の自機画像に置き替えて
 自分の作っているプログラムに組み込んでみたら、
 こちらもちゃんと希望通りに動きました。

 mono様、本当にどうもありがとうございました。
 自分のプログラム技術が未熟なため、
 ずっと悩んでいた部分でしたので凄く助かりました!
 本当に本当に本当にどうもありがとうございました。m(_ _ m)ペコリ



>>check様
 自分の質問の文章が未熟だったため、分かりづらくてすみませんでした。
 mono様のサンプルブログラムが自分の希望していた動きでした。



質問が解決したため、この質問は解決済みとさせて頂きますね。
皆様、どうもありがとうございました。m(_ _ m)ペコリ



ONION software Copyright 1997-2023(c) All rights reserved.