[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 03/15 23:49 / Filesize : 242 KB / Number-of Response : 657
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【2D】ゲーム作成ツールGameMaker part3【マンセー】



1 名前:名前は開発中のものです。 mailto:sage [2008/05/11(日) 01:41:47 ID:PRhlwPyW]
無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。

●本家(英語)
 ttp://www.gamemaker.nl/
●GameMaker Japan - 非公式情報サイト(日本語)
 ttp://gamemaker.main.jp/
●初心者向けチュートリアル
 ttp://gamemaker.main.jp/modules/articles/index.php?cat_id=1


前スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
pc8.2ch.net/test/read.cgi/gamedev/1087068523/

377 名前:名前は開発中のものです。 mailto:sage [2008/11/07(金) 07:28:10 ID:pXoTyMbW]
ちょっとした注意。
HelpのUsing Game MakerのEventsにも書いてあるけど、
ゲーム内の全てのアクションは↓の順に実行されていく。
・Begin step events
・Alarm events
・Keyboard, Key press, and Key release events
・Mouse events
・Normal step events
・(now all instances are set to their new positions)
・Collision events
・End step events
・Drawing events

ここで言いたいのは、stepイベントの後に全てのインスタンスの移動が行われるってこと。
だから>>376で書いたのは、End stepイベントにでも入れておくといいと思う。
……まぁ1フレームの差だけど。

378 名前:名前は開発中のものです。 [2008/11/07(金) 17:17:30 ID:q2bnCqzi]
不思議のダンジョンのようなターン性を採用したいのですがどのように作ればいいのでしょう?

379 名前:名前は開発中のものです。 [2008/11/07(金) 22:09:04 ID:dk+hUO84]
割り込む感じでスイマセン、質問です
非公式サイトから導入した日本語描画スクリプトですがフェード機能をつけるには
どうしたらいいですか?
drawアクションじゃないからalphaも使えないし……

380 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 00:32:27 ID:ralVUMsS]
>>378
こんなので良ければ参考にして下さい
www1.axfc.net/uploader/File/so/13426.zip

381 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:05:10 ID:YaFy+mMy]
おお、ありがとうございます。
敵が複数いる場合でも同じ処理で大丈夫何でしょうか?

382 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:17:10 ID:tiFPEnIw]
うーん。

敵が複数居る場合、固定値ではなく、数値を増やしていって
最後に行動したモンスター(キャラ)が変数を1に戻すとかどうかな?

383 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:24:43 ID:YaFy+mMy]
敵の数がある程度減ったらランダムで数匹追加などもしたいのですが
減ったり増えたりした時の処理が難しそうでどうも…

384 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:29:31 ID:tiFPEnIw]
global変数(A)に、現状の敵個数を記憶しておいて
敵が死ぬ時にglobal変数(A)を減らす。

ある程度の数値になったら敵を追加。
追加されたらglobal変数(A)が増えるようにしておく。

チェックするのはBegin stepでもEnd stepでもお好きな時にどうぞ?

385 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 08:00:14 ID:usFb+U0s]
ダンジョンで思い出したけどダンジョン自動生成てのはやっぱり難しいもんなのかな。



386 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:37:31 ID:YaFy+mMy]
>>384
遅れましたがありがとう
もう一つ質問したいのですが、「最初にランダムでどこか一方向に動く、動く前にもし行きたい方向に壁があれば残り三つからランダムでどこか一方向に、そこにも壁があれば〜」という判断をさせたいのですがどういったアクションを組めばいいのでしょう?

387 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:38:58 ID:HeJ/3Xvw]
ttp://amagame.blog12.fc2.com/blog-entry-1989.html
ttp://d.hatena.ne.jp/Gemma/20070816

これとか読んでみ。目から鱗な考え方だ

388 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:51:38 ID:tiFPEnIw]
>>387
うっは、ブログの方のファイル落とそうとしてgamDEVという事に愕然とした!

誰かファイルもってないかなorz

389 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:56:28 ID:tiFPEnIw]
>>386
まず処理したい系統を図式にして処理したい順番を考える。

質問の例だと、
1) 移動方向をランダムにチェック
 (壁があるかないか判断)
2) 壁がない?
 Y→移動
 N→1)に戻って処理しなおし

とするか、

1) 敵Aの周りの壁を総当たりチェック。
2) 移動できそうな場所を記憶。
3) その中からランダムに選択

とするか、が浮かぶ。
もちろん他にも良い手段はあると思う。

390 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 22:45:40 ID:YaFy+mMy]
うーむなるほど
やはりそういうのにはGMLが必須なのでしょうか…

391 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 22:52:26 ID:tiFPEnIw]
>>390
そっちのほうが楽ではあるけど、
処理の中に処理ってのは普通配置でもできるからガンバッ!

Control の Other にある、start/End block や else などをうまく組み合わせてみよう。

392 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 14:58:27 ID:XXK2SOj2]
>>387
上の凄いな。考えもしなかった

393 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 18:30:25 ID:iQ0fQqMk]
Access violation がでるなあ

execute piece of code だとエラー吐くのに
同じ内容をscripts に記述すると直るのは嫌らしい仕様だ

394 名前:よこしま mailto:sage [2008/11/09(日) 20:36:08 ID:+tEv1BfM]
>>379
レジスト版の場合、以下の方法でフェードインできます。

1. mbtext_drawスクリプトの中でdraw_sprite_part()を呼び出している所が2カ所あるので、それらをdraw_sprite_part_ext()に書き換えます。

draw_sprite_part(..., pos_x, pos_y);

draw_sprite_part_ext(..., pos_x, pos_y, 1, 1, -1, global.my_text_alpha);

2. mbtext_draw()を呼び出す前に、global.my_text_alphaに0〜1の値を代入します。

395 名前:379 [2008/11/09(日) 23:09:10 ID:37vptB7Q]
>>394
そうか…そこいじれば良かったのか…
ありがとうございます…
あと追加で質問なんですが…
文字を左から順番に出していくのに、いつもはstring_char_atなどを使っていたのですが、
mbtextの場合、文字列関数は使えないのでどうしたら良いでしょうか??



396 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 23:25:02 ID:UpE3UCrs]
>>393
そんな「仕様」はないと思うけど
GM7だと、たまに何の変哲もないコードでエラーが出て
同じコード打ち直すとかコピペすると直るという現象が報告されてます

>>395
2バイト文字ならstring_copyで2文字取り出すとか
string_char_atでもう1文字くっつけるとか

397 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 00:20:09 ID:bX5vjmo9]
>>396
そうなんですか・・・お騒がせしました
debuger が落ちる瞬間にアクセス違反が表示されていて
挿入方法で扱いが変わるみたいなのでそういうものかなと思ったんですけど違うみたいですね


398 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 01:53:38 ID:hROa89TY]
ヘルスや変数などの数値を用意した0〜9のスプライトで表示したいのですがどのようにすればいいんでしょうか

399 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 02:40:36 ID:l3rRgQmH]
GM5ならdraw_text_sprite
GM6ならfont_add_sprite(要レジスト)してdraw_set_fontしてdraw_text
コード書けるなら文字列に変換して1文字ずつ切り出してdraw_sprite

400 名前:名前は開発中のものです。 [2008/11/10(月) 23:05:15 ID:xqr6b0iA]
>>398
まず数を文字列化して
for (i=1; i<=string_length(str); i+=1)
{

switch string_char_at(str, i)
{
case "0":
s = 0
break;
こんな感じで9まで行って、
draw_sprite_extとかでサブイメージをsに置き換えて表示する
*(1〜9全部1つのスプライトにサブイメージとして入れておく)

401 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 23:18:31 ID:rXjUYemu]
同じ敵がたくさん出てくるようにしたいのですが個別に体力を設定する方法はありますか?
ヘルスや変数を使うと敵全員共通のものとみなされてしまってどうも…

402 名前:名前は開発中のものです。 [2008/11/10(月) 23:23:09 ID:PA4xWfUd]
x=rundm(10)+1

403 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 03:25:19 ID:j6inckL9]
>>401
例えばenemyってオブジェクトを作ったとして、
createイベントにhp = 100;ってコードを置いたとする。
drawイベント内で
health = hp;  ←ここ重要
そしてヘルスバーを描かせる。

こうすれば、個別にヘルスバーが減っていくはず。

healthってのは、全共通で使われる変数。ヘルスバーを描くためだけの仮の変数とでも意識しておくといいかも。
だからhealthって変数を、そのインスタンスが個別に持っている変数で上書きしてからバーを描く。

こんなイメージ
enemy (1匹目) // hpが50だとする
<draw event>
health = hp; // healthを50に設定
draw_healthbar (略) // ここでヘルスバーを描く(HP 50)

enemy (2匹目) // hpが30だとする
<draw event>
health = hp; // healthが50だったのが、30に上書きされる
draw_healthbar (略) // ここでヘルスバーを描く(HP 30)

404 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 07:21:02 ID:gKnNaknY]
ありがとうございます
特に敵のヘルスバーを表示する必要はないのですがその時はdrawの部分を省けばいいのでしょうか

405 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 08:14:23 ID:eY/CDP8z]
ならcreateでhp変数を設定すれば良いだけだと思う

globalじゃない限り普通の変数はそのオブジェクト内のみだから。



406 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 22:50:05 ID:cbXen0Dw]
なるほど

407 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 07:21:33 ID:sHnxhObY]
コリジョンで敵のhp減らすとかだとother.とか付けないと自分のhp減るから注意な

408 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 16:13:15 ID:4hbBOuzF]
>>407
それは書き方にもよるけど……。
主人公が敵に攻撃したときと、敵が主人公の攻撃に当たったとき。
状況は同じだけど、どっちのイベントでHPを減らすようにしているのかで変わる。

409 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 23:03:32 ID:izAxC9WD]
Scriptsで書いたコード中の変数も
呼び出したオブジェクトのローカル変数にされるのか・・・

ループ用変数が被りまくり\(^o^)/


410 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 23:20:13 ID:Bs1pE8FJ]
そのためのvar宣言ですよ
var i
とかやると、iはスクリプト内でのみ有効になる

411 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 23:40:22 ID:izAxC9WD]
うん、その作業をちまちまやってますw

この仕様ならargumentって要素があんまり意味ないような気がするんだけどなあ
せめてScriptsに隠蔽要素が欲しかった

412 名前:名前は開発中のものです。 [2008/11/15(土) 00:09:50 ID:HG68xRSC]



メーカーに勤めてないとなかなかわかりづらい豆知識
リフレッシュレート

よい子のみなちゃんは、60Hzと設定したら
モニタもそのとおりに60Hzでリフレッシュしていると思っているかもしれないが





否!!!!!!!!!!!!!!!!!!



60Hzで設定していても、モニタ側は59.944Hzや58.989Hzなど、
とにかく中途半端な数値でしかリフレッシュしないものがある。
モニタが粗悪品だったり、グラフィックボード(特にRADEON)が悪さをしていることが多い。

そしてこの場合、滑らかに移動しているように見えず、かなりカクカクして見える。
これを直すには、ビデオBIOSの更新やモニタのファームウェア更新しかないので
相当面倒だ。個人で直すことはまず出来ない。

413 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 05:12:01 ID:gZryKwbH]
でも逆に言うと、Scriptsからローカル変数をいじれるんだよね。
今の仕様でいいと思うんだけどな。

414 名前:名前は開発中のものです。 [2008/11/15(土) 12:32:10 ID:cZlHfE8C]
今GM5.3Aでアクションゲームを作ろうとしているのですが、キャラクターの移動が良いように行われません。
(移動させるキーを押す→キャラクター移動→キーを放してもその場で静止せず、ずっと移動し続ける)
どのように行えばキーを放す際に静止するようにできるのでしょうか?初歩的な質問ですいません;

415 名前:名前は開発中のものです。 [2008/11/15(土) 13:05:07 ID:cZlHfE8C]
↑自己解決しました;





416 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 14:24:35 ID:PB/Zmvn5]
「変数が○になったとき」や「変数が○以上になった時」ではなく
「変数Aに数値が加算されたとき」という条件を作るにはどのようにすればいいのでしょうか?

417 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 15:00:10 ID:gZryKwbH]
加算されたとき
→1フレーム前の数値よりも今のフレームの数値が大きくなったとき
>>374-377と同じ考え方)

もしくは、その数値に加算したときに起こしたいアクションを置く(そのまんま)
(変数Aに加算した直後、起こしたいアクションを行う)

418 名前:名前は開発中のものです。 [2008/11/15(土) 15:22:11 ID:cZlHfE8C]
どうも414です。
ジャンプをさせようとしてジャンプは出来るようになったのですが、今度はキャラクターが地上にいる状態で動けなくなってしまいました。
(正確にはジャンプは出来るが横移動が全くできない状態)
どの様にすれば解決できるでしょうか?

419 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 16:40:37 ID:PB/Zmvn5]
>>417
>>374〜的なやり方で行くと
stepに
difference=LEVEL
difference<prev_differenceのときやりたい処理を行う
End stepに
prev_difference=difference
とこんな風でいいのでしょうか?

420 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:04:15 ID:gZryKwbH]
>>419
パニくっているときは、とりあえず適当にいろいろ放り込んでしまいがち。
でも、それは全然解決にならない。詰まったときこそ落ち着こう。
「行き詰ったら原点に返れ」
詰まったらまず、何をしたいのかを明確にする。それから、したいことを分析しよう。


見たところ、レベルが上がったときに何かをしたいようだね。
まぁそれでできなくはないんだけど。……一つ問題を除けば。

この場合differenceは今のレベル、prev_differenceは1フレーム前のレベル。
difference<prev_differenceってのはどういう意味になるか。
今のレベルが1フレーム前のレベルより小さいとき、つまりレベルが下がったときになる。
何をしているのか分からないままとりあえず入れるんじゃなくて、何をやってるのかを考えて理解しよう。


ちなみにdifferenceってのは「差」のこと。
前の例では競争だったから、二人の差ということでdifferenceという単語を使っただけ。
prevってのは「前」を意味するpreviousの略。

differenceは使わずに、LEVELとprev_LEVELの2つだけでいい。
わかりづらかったら、いっそmae_LEVELと書いてしまうのもありだな。
自分がわからないプログラムは作らない。これ鉄則。

<Step>
LEVEL > mae_LEVEL    // 今のレベルが前のレベルより大きくなったとき

<End Step>
mae_LEVEL = LEVEL    // 「前のレベル」を今のレベルに更新する。

421 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:04:49 ID:gZryKwbH]
>>418
地上にいる間ずっと、地面との接触が起きているのかもしれない。
でも>>414のことも考えると、歩かせるアクションの方にも問題があるのかもしれない。
どこかで「止める」アクションを使っていてそれが影響しているとか。
サンプルが非公式情報サイトかどこかになかったかな……。
サンプルを探してみるのもいいし、GMにexampleとして最初から入っているものがあったらそれを見てみるのもいい。

422 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:08:02 ID:PB/Zmvn5]
>>420
なるほど…丁寧にありがとうございます

423 名前:名前は開発中のものです。 [2008/11/15(土) 18:39:46 ID:cZlHfE8C]
>>421
了解しました。
返答ありがとうございます

424 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 10:34:59 ID:aHkifR23]
3桁の数値を獲得してそれぞれオリジナルのスプライトで表示したいのですが
百の位と十の位と一の位を獲得するにはどのようにしたらいいのでしょう。

425 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 12:24:09 ID:uIhvcRmv]
>>424
>400あたり参照
計算で出したいなら、一の位は10で割った余り、すなわち number mod 10
十の位は10で割ってから一の位をとればいいから (number div 10) mod 10
同じ考えで百の位は (number div 100) mod 10



426 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 14:19:08 ID:aHkifR23]
>>425
簡単に作ることができました!ありがとうございます

427 名前:名前は開発中のものです。 [2008/11/16(日) 17:29:30 ID:HhlndW4R]
アクションゲームで、敵AのCreateに変数hp(体力)を設定して、主人公の攻撃が当たった時にhpを減らすよう設定しました。
その敵Aを数体設置してテストプレイを始め一体を倒したところちょっと経ってから「UNKNOWN variable hp」のようなエラーが出てしまうようになりました。
変数操作も消滅もモンスター内でselfで行っているのですが何か間違っているのでしょうか…

428 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 18:48:04 ID:l0hPwkQ6]
>>427
エラーメッセージでどのオブジェクトのどのイベントの
どのアクションってところまで教えてくれるんだから、まずはそこを見るべし。
そのエラーになる要因はいくつも考えられるけど、それだけの情報じゃ絞りこめん。

> 一体を倒したところちょっと経ってから
その倒したところで何をしてるの? 例えば他のオブジェクトにchangeしたりしてない?

429 名前:名前は開発中のものです。 [2008/11/16(日) 18:56:22 ID:HhlndW4R]
>>428
ステップで「hpが0以下になったら消滅(死亡)」と言うのを設定しているんですがそれが変数を見失ってるみたいです。

倒したあとは自分がその辺を動き回っているだけでオブジェクト変更などは行っていないはずです

430 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 19:27:32 ID:OWHuy+Yr]
良ければうp

431 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 02:32:01 ID:TD8Ccrf3]
Createイベントで変数を初期化してるのにエラーが出るって場合は
イベント自体実行されていないことが考えられる。よくある例としては
・Parentのイベントで変数を定義してるけど、子オブジェクトで継承イベントを呼んでない
・change the instanceでインスタンスを変更するときにイベントを実行していない

また、instance.variable のようにドット付きで変数を参照している場合には
instanceの方が存在してないという可能性もある。
削除されたインスタンスを参照していたり、deactivateされていたりなど。

ただ、話を聞くかぎりではどちらにも当てはまらないみたいだから
原因は他のところにあると思う。
やっぱり実際のオブジェクト情報を見ないと特定は難しいかな。

432 名前:名前は開発中のものです。 [2008/11/17(月) 05:45:22 ID:GSdqregN]
まあいいとこ、

それらのインスタンスで「共有」してる形になっているので
ある一体が消えると変数も消えてしまってる

ってとこじゃないの
インスタンスABCDEで一つの変数を見ていて
インスタンスAが消えたと同時に変数も消え
BCDEが参照できなくなっていると

433 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 10:24:12 ID:JkLZj++k]
>主人公の攻撃が当たった時にhpを減らすよう設定
>ステップで「hpが0以下になったら消滅(死亡)」

この辺の実行される順番に問題があると予想してみる。

もしそうだったら、「hpが0以下になったら消滅(死亡)」を、ステップじゃなくコリジョンイベントで実行したら直る、……かもしれない。

434 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 16:16:23 ID:7QGWWpc1]
マウスの動きに合わせて動くオブジェクトを作りたいのですがどうすれば良いでしょうか?
stepでマウスの座標に移動させてしまうと、
そのオブジェクトがマウス以外の要因(敵との接触など)で移動した場合も、すぐにマウスの座標に戻ってしまいます。

説明が下手ですみませんが、よろしくお願いします。

435 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 18:01:40 ID:JkLZj++k]
>マウスの動きに合わせて動くオブジェクトを作りたい
これがやりたいことなら、
>そのオブジェクトがマウス以外の要因(敵との接触など)で移動した場合も、すぐにマウスの座標に戻る
これは正しい動作ってことになるよね。マウスの動きに合わせて動いてるんだから。

どういうときにどういう動作をさせたいのか。
やりたいことをもう少し詳しく具体的に考えて。



436 名前:名前は開発中のものです。 [2008/11/17(月) 20:03:59 ID:qkRbLFEU]
>>434
つまり一定速度でマウスに向かわせたいってこと??
もしそうならpoint_directionを使うといいと思う

437 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 21:34:27 ID:7QGWWpc1]
説明が下手で申し訳ありません。

>>435,>>436
そうです、それが正しい動作なのです。
ですが私が目指しているのは「マウスの座標に移動する」のではなく「マウスの動きにあわせる」なのです。
例えばマウスを右に動かしたらオブジェクトも右に、マウスの移動量だけ動く。という事がしたいのです。

438 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:07:33 ID:PQNNdjbn]
>>437
移動する前にマウス座標と移動したあとのマウス座標を比較するとかで対応とか無理ですか?

439 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:08:05 ID:PQNNdjbn]
移動する前と後の座標を比較 ですね。誤字申し訳ない。

440 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:38:22 ID:7QGWWpc1]
>>438,>>439
ありがとうございます。
何となくやり方は分かりましたがそれをコードで表すにはどうすべきか迷っております。
ちなみにGM6です。

441 名前:名前は開発中のものです。 [2008/11/17(月) 23:26:43 ID:qkRbLFEU]
うーん、まだやりたいことがよく分からないけど…
つまり初めはマウスと同じ位置にインスタンスがあって、で何かによってズラされると
マウスに平行して動くってこと??
もしそうなら例えば
ステップイベントでx、y、をマウス座標+global.pos_x,global.pos_yてして
変数の値をコントロールするとか…

442 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 23:39:43 ID:PQNNdjbn]
>>440

>>441
のように、マウス座標取得してウンヌン。
>>420あたりの感じでできますか?

自分もいまいち理解しきれてませんが、
マウスを転がすところがした方向にインスタンスを移動させたいって事だと思います。
この場合、マウスポインタが画面外に出た場合や
さらに移動させようとしてマウスを元に戻した場合など変になりませんか?


純粋にマウスが移動したピクセス値だけを取得する関数ってありましたっけ?

443 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 23:46:34 ID:TD8Ccrf3]
考え方としては>374の方が近いんじゃないかな
毎回mouse_x, mouse_yの値を覚えといて
x += mouse_x - (前回の値) とかすればよろし

444 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 00:19:10 ID:0wQt7vmy]
基本的に、ピログラムってのは原始的なもの。

高度な、「以前の値から勝手に加減して現在位置を割り出す」なんてことはできない。


たいていが

まずマウスの位置をプログラマが取得
更にマウスの位置をプログラマで取得、
その差を自分ではじき出して移動量とする

そんな感じで書かないといけない

一個の関数でポンってできるようなものはあまりない。

445 名前:440 mailto:sage [2008/11/18(火) 06:04:44 ID:MofBkydO]
>>441-444
ありがとうございます。前回の値を覚えさせておく事で何とか私の思っている通りに出来ました。

マウス座標 - 前回のマウス座標 + 前回のオブジェクト座標 に移動させる事で出来ました。
本当にありがとうございました。



446 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 15:26:02 ID:DeAHgIn+]
ジョイスティックって設定項目あったっけ?

見当たらんのだけど

447 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 18:07:19 ID:4za16kRK]
以前ダンジョンゲームのターン制についての質問をした者です
ターン制に関してはぎこちないながらも何とか完成したのですが、
毎回周囲のマスが開いているか確認→空いているところにランダムに移動だと挙動不審というか妙な動きになってしまいます。
主人公が近くにいるときは追って動く、一本道では後戻りせずなるべくまっすぐ進む、といった動きをさせたいのですが
どのようにアクションを組めばいいのでしょうか。

448 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 18:19:51 ID:ratnEFy2]
>>446
設定項目?
GMのヘルプの
The Game Maker Language (GML)
→User Interaction
→The Joystick
にあるやつじゃなくて?

キーコンフィグしたいってことなら、
グローバル変数でも作ってjoystick_check_buttonを使うといいと思う。

>>447
ターン制の動きができた、と。
んで、状況に応じて動きを制限してやりたい、と?
>主人公が近くにいるときは追って動く
>一本道では後戻りせずなるべくまっすぐ進む
やりたいことちゃんとわかってるじゃないか。

>主人公が近くにいるときは
>>追って動く

>一本道では
>>後戻りせずなるべくまっすぐ進む

こう分けて、もう少し考えてみ?

449 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 18:31:18 ID:ratnEFy2]
一本道のとき、そのキャラの周囲に通れるマスはいくつある?
後戻りってのは、前回いたマスに行くことだよね?

450 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 19:05:35 ID:9SobK3CI]
>>446
ジョイスティックイベントを探してるんだったら、Mouseの中にある。

451 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 02:15:20 ID:oldAvKXc]
斜め入力できる???

例えば
top
right

の順だと斜め入力にならない

452 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 02:43:38 ID:JLC+2EzT]
キー操作で斜め移動する時と同じ原理で、たとえばupで y -= 4、
rightで x += 4 とすれば結果的に斜めに動くことになるけど。

speedとdirection使ってるとか、斜めの時だけ移動量変えたいとかだったら
joystick系の関数を使って判定するコードを書く必要がある。

453 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 14:33:23 ID:xqi/6PvR]
ある範囲(ゲーム中に移動する)以外を黒で塗りつぶしたいのですがどうすれば良いのでしょうか?

454 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 15:13:08 ID:gtPmWcjx]
そこだけ抜いたスプライトをビューにくっつけたりすればいいんじゃないか?

455 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 18:09:38 ID:/1Y7KoVd]
原始的に、黒い長方形を4つ描くってのもある。



456 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 18:19:17 ID:fSCzA9A7]
むしろ画面サイズの黒い長方形の上にすべてを描画する。

457 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 19:40:56 ID:xqi/6PvR]
>>454
移動できません

>>455
ありがとうございます。
それも考えたのですが記述が長くなりそうで・・・
「その範囲以外」という指定は出来ないのでしょうか?

458 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 20:57:48 ID:JLC+2EzT]
>>457
「その範囲外」というのなら、黒く塗り潰したサーフェイスの
真ん中をくり抜いてかぶせるという方法があるけど、
どう見ても>454-455の方が簡単だわな。

「移動できません」って意味がわからないけど、
画面の2倍サイズのスプライトの真ん中に穴あけて
穴がちょうどいい位置にくるように動かせばいい。
そんな大きいスプライト、リソースがもったいないというならその通りだが。
「記述が長くなりそう」ってのも、たった4行だべ?
四隅の座標を計算して変数に入れとけば何てことない。

459 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 21:35:24 ID:xqi/6PvR]
>>458
ありがとうございます。
確かに見たところ>>455のが最も楽そうですので四つ四角形を作ってみます。


続けて質問で申し訳ありません。
sleepを使うと全てが停止してしまうのですが一つのオブジェクトのみを停止させるにはどうすれば良いのでしょうか?

460 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 06:23:48 ID:8FHkjqBp]
room
→backgroundsタブ
にある、Draw background colorのチェックボックスをオンにして、
その下の Color: のボックスをクリックして黒を選択する。

こうすれば、背景色が黒になる。

チェックボックスをオフにすると黒く見えるが、
それは黒ではなく何も塗られていないという状態なので、
上のやり方でいいから一度でも何か色で塗っておくべき。

一つのオブジェクトのみを停止となると、
with (object)
{

}
を使うといい。
移動を停止させたいとなると、
{}の間にspeed = 0;を入れればいいかな。

もしその後でまた動きを再開させたいのだったら、
deactiveやactiveを使うとか、その辺のアルゴリズムはまた考えなきゃいけない。

461 名前:459 mailto:sage [2008/11/21(金) 06:58:26 ID:sjxyegPf]
>>460
ありがとうございます。
その方法は便利ですね。ですが>>459で言う停止、というのはそのオブジェクト自体の働きの事です。
Createで1120ms停止してから移動開始、等です

462 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 09:04:25 ID:8FHkjqBp]
だったら「停止」とは逆に、「動いていいときだけ動く」とすればいい。
例えばステップイベントで動かしているのなら、
if (ugoku == true)
{
   // ここにアクション
}
として、動かしたくないときはugokuをfalseにする。

わかっていると思うけど、msはミリセカンド。
秒でやりたいのならdatetime関数を使うのも手だけど、
そこまで拘らないのなら、フレーム数を数えるという方法もある。

例えば、
<Create>
ugoku = false;
taiki = 0;

<Step>
if (ugoku == true)
{
   //アクション
}
else
{
  taiki += 1;
  if (taiki >= 300)
  {ugoku = true;}
}

と書くと、インスタンスが作られてから300フレーム(5秒後(60fps時))にアクションをするようになる。
原理が分かれば応用もできるはず。

463 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 14:36:04 ID:sjxyegPf]
>>462
ありがとうございます。
なるほど、それは応用性が高くて便利ですね。助かりました。

464 名前:名前は開発中のものです。 [2008/11/21(金) 20:07:21 ID:Aa2c/Y3P]
>>Createで1120ms停止してから移動開始、等です
普通にアラームを使えばいいんじゃ…?

465 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 22:09:17 ID:sjxyegPf]
>>464
アラームってms単位なのでしょうか?
使ってみた所なんかちょっと違うような・・・



466 名前:名前は開発中のものです。 [2008/11/21(金) 22:25:03 ID:Aa2c/Y3P]
>>465
アラームは指定のステップ数が来たらイベントを行うのでms単位ではなく
ステップ単位です
何かmsにしなきゃいけない理由でもあったら別だけど基本的な時間をコントロールしたいなら
アラームが一番簡単で分かりやすい方法だから…

467 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 05:30:20 ID:ih+yuern]
>>465
どうしても秒を使いたいのなら、
最初に一度current_timeを使って現在の時刻を取得しておいて、
毎回current_timeを使って、最初に取得しておいた時間から何ミリ秒経過したかを調べる方法がある。

秒単位に拘るのなら↑のやり方があるけど、どう考えてもアラームの方が楽。

468 名前:465 mailto:sage [2008/11/22(土) 14:23:55 ID:Lvyzb+s5]
>>466
ありがとうございます。
説明しにくいのですがどうしても秒単位じゃないとダメなのです。

>>467
ありがとうございます。
試しに使ってみます。

469 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 19:42:07 ID:q+lYsPmJ]
秒からステップ数への換算なんて 秒×room_speed だけで済むし
(1120msなら 1.12*room_speed)
どちらにしても1ステップ未満の分解能は得られないけどね。
それとも、ゲームが処理落ちしてても実時間に
同期させて動かしたいってことなのかな?

470 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 21:30:13 ID:clFoYfTe]
>>469
本人ではないけど恐らく後者じゃないかな
あえて実時間でフレーム非同期処理っていうとネットワーク関連かも
何れにせよ解決したっぽいので何よりだ

471 名前:名前は開発中のものです。 [2008/11/22(土) 21:53:58 ID:lm1qIDqX]
spriteの矢印の絵をマウスの座標に向けたいんですが、
(イメージとしては見下ろし視点での戦車の砲台)
やり方がわからないです。6.0のサンプルはあったのですが
低スペックなのでGameMaker6.0以降は起動できませんでした・・・。
なのでバージョンは5.3Aです。GMLはサンプルなどを参考にして使う程度で
多少は理解できるのですが書けません。
どなたかご教授お願いします。
お手数でなければ5.3AのサンプルをUPしていただきたいです。
よろしくお願いします

472 名前:名前は開発中のものです。 [2008/11/22(土) 22:10:27 ID:lm1qIDqX]
ログちゃんと読めてなかった…
自己解決しました 失礼しました

473 名前:名前は開発中のものです。 mailto:sage [2008/11/24(月) 13:04:13 ID:xHi4CDCd]
GMLでマウスポインタ自体を動かす事は出来ないのでしょうか?
よろしくお願いします。

474 名前:名前は開発中のものです。 mailto:sage [2008/11/24(月) 15:27:27 ID:oGsKQE88]
window_mouse_setとかdisplay_mouse_setとか

475 名前:名前は開発中のものです。 mailto:sage [2008/11/24(月) 21:01:38 ID:xHi4CDCd]
ありがとうございます



476 名前:名前は開発中のものです。 [2008/11/26(水) 22:59:16 ID:8dk2lxXH]
飛び道具を発射して壁以外の何かに当たった時アクションを起こすというふうにしたいのですが
コリジョンで特定のオブジェクトでなく「何かに当たった時」という設定はできますか?
今は敵一つ一つに「飛び道具に当たった時アクション」の設定をしているですがどうにも敵の種類が多いので…

477 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 00:33:24 ID:N2ZEFTBa]
>>476
まさにそういう用途のためにあるのがParentと継承のシステム。

適当なオブジェクトを作ってobj_enemyとでも名付ける。
すべての敵オブジェクトでParentをobj_enemyに設定する。
(たしかAdvanced Modeを有効にしないとParentが出てこないので注意)
後はobj_enemyとのCollisionイベントを作れば終わり。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<242KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef