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


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

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



1 名前:名前は開発中のものです。 [2005/07/12(火) 09:03:47 ID:DK0oUKwt]
無料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/

642 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 18:30:38 ID:QsBWBjou]
ダメージを食らった時無敵時間を作りたいんですが
「ヘルスが1以上減ったとき」というのはどう設定すればいいのでしょうか

643 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 21:57:57 ID:lZt/Vorp]
>>642
俺も初心者だけど浮かんだので書いてみる。

・ステップ開始イベントで、現在のヘルスを変数(たとえば、henka_health)に格納
・ステップ終了イベントで、現在のヘルスとhenka_healthを比較
1以上変化があれば、無敵時間突入

という風にやるとかどう?

644 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 22:08:42 ID:lZt/Vorp]
>>641

アニメーションが終わった時のイベントが End of animation というのは解ってるんだけど、
アニメーション中にatack(があったかの)変数を使って、
もしあれば次のモーションに移る。

って感じの「モーション中に何かあったか」を調べるGMLって何かある?

645 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 22:31:07 ID:OLWlECNF]
>>642
プレイヤーのヘルスを減らすスクリプトっていうのを作っておいて、
ダメージを与える時には必ずそのスクリプトを呼ぶようにする。
で、何か処理を追加したい時にはそのスクリプトに追加する。
ってやり方もあるよ。

>>644
アニメーション開始時に適当な変数を0に設定して
何かアクションがあったら変数を1に変える
アニメーション終了イベントで変数が1かどうかチェック
でどうかな。

646 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 22:41:58 ID:lZt/Vorp]
>>645
連続攻撃にしたいんだ。それだと1・・・ ん?
1回目に atack=1 二回目に atack=2 ...
として、終了イベントで ってあれー?

うん、ありがと、何か閃きそうだ。頑張ってみる。

647 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 22:43:28 ID:NwDfsPPB]
遅かったかも試練が、書いたので置いとく。

>>644
キープレスイベントかなんかで、イベントを拾えばいいんでないの?

>>641
zキーで攻撃するとして、
key press <z>
...
switch (attack) {
 case 0: // 1発目
 // ここにモーションを発動させる何かを書く。
 attack += 1
 break;

 case 1: // 2発目
 // ここにモーションを発動させる何かを書く。
 attack += 1;
 break;
// ...
}
...
モーションは、タイムラインで設定すればいいとおも。
もしくは、ステップイベントでモーションを設定してる自作スクリプトを呼び出す、のもアリかなぁ
例えば引数を、attackとモーションが始まってから経過したステップ数にして、
attackでモーションの種類を場合わけをして、
経過ステップ数でそれに応じた移動をさせたり、アニメーションさせたり、キー入力の可否を設定したり、等々...
ま、それだとタイムラインとあまり変わらんのだが。

648 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 23:05:42 ID:lZt/Vorp]
>>647
thx
caseもやってみたけど、イメージ通りとはいかなかった。
(俺のやりかたが悪いのか

イメージとしては、モーションが終わらないと次のモーションが始まらないって事なんだけど、
どうしても、モーション途中でボタン押すと、モーション途中で放棄して新しいモーションが
始まるんだ。

649 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 23:10:18 ID:lZt/Vorp]
一定時間内(連続二回とか)に同じキーが押されるって判断は、
タイムライン?とかアラームで判断させたほうが良い?(これもイマイチうまくいってない

これができるとダッシュ判定とかできそうなんだよな。 うーん。

650 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 23:16:11 ID:NwDfsPPB]
>>648
あ、動作キャンセルじゃないのか。上の例は、動作キャンセルっす・・・。
となると、俺だったらモーション中は攻撃キーの入力を無視するような仕組みを作るなぁ。
キー入力可否を表す変数(ableAttack)を一つ用意して、
if (ableAttack) {
 switch (attack) {
  // ここは>>647と同じ感じで...
 }
}
こんなかんじで。モーションが終わったら、連続攻撃入力受け待ち期間になって、
次の攻撃キーの入力があったら、連続攻撃発動(attack が +1されてく)。
この期間はアラームで管理するといいかもね。
で、連続攻撃受け待ち期間も終了したら attack を 0 にもどす。
そんなイメージが沸いた。



651 名前:名前は開発中のものです。 mailto:sage [2007/12/04(火) 23:33:22 ID:lZt/Vorp]
>>650
thx
うーん、それだと小パンチ連続みたいな感じができないんだよね。
何カウントか待たないといけなくならない? というか成った。
モーション中にもっかい押されると連続攻撃発生みたいにしたい。

少し落ち着いてくる。

652 名前:名前は開発中のものです。 mailto:sage [2007/12/05(水) 02:09:27 ID:DyBIMWNQ]
格闘ゲームの必殺技みたいにカーソルキーの入力待ちはどうすればできますか?

「↓・斜め→・右+A」のようなコマンドです。

653 名前:名前は開発中のものです。 mailto:sage [2007/12/06(木) 00:37:05 ID:ipO1poTD]
連続攻撃判定うまくいかなーいorz

654 名前:名前は開発中のものです。 [2007/12/06(木) 22:57:30 ID:g7KZCqa1]
はじめましてこんばんわ。
最近gamemakerにはまりだした、新人です。
2D横スクロールゲームを作ろうと思って>>305さんのサンプルを参考にさせてもらい、
ちょくちょく進めてるんですが、途中で詰まってしまって、原因を探ろうにも
全くわかりません。どなたかご教授お願いします。

ttp://tonosiki.mbnsk.net/uploader/src/up6820.rar

←→キー;左右移動
Zキー;ジャンプ
Xキー;パンチ

エラー:
パンチを数回使うと、keyXで変数panchが見つからないとエラー表示される
また、移動しながらパンチをしてもkeyleftまたはkeyrightで変数panchが見つからないと
表示される。

途中、命令をコメント文で囲っていますが、気にしないでください。

655 名前:名前は開発中のものです。 mailto:sage [2007/12/06(木) 23:41:29 ID:x5GKX6Js]
動きのあるオブジェクトを動きのあるオブジェクトにチェンジすると
スプライトが1から表示されない時があるのですが解消方法はありますか?

656 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 00:45:55 ID:4eA37li8]
上のほうで言っていた翻訳の奴あげてホスィ
paypalで1000円までなら支払ってもイイ

657 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 00:58:23 ID:+n/vdyUz]
>>654
見たところ、unkown variable というエラーがでるような記述ではないと思います。
そこで、unknown variable gamemaker bug というキーワードでググったところ、
海外のフォーラムに、ごく稀にそのようなことが起こる、との書き込みがありました。
ttp://gmc.yoyogames.com/lofiversion/index.php/t300055.html
下から2番目に Alert Games という人が答えています。
どうやら、プロジェクトをセーブする際にバグがあるのかもしれない、といっていました。
その人はバックアップファイルで元に戻すことを勧めていますが、
私のほうで obj_main オブジェクトを丸ごと duplicate して(右クリックでできます) 再度ためしたところ、unknown variable のエラー表示はなくなりました。
こんなことが起こるんですねぇ・・・。



658 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 02:06:08 ID:4eA37li8]
態度が悪いといって怒られるかも知れませんが助けてください

キャラをスト3の豪鬼の必殺技みたいに、横にすべりながら攻撃する時に、思い通りに動かない。
Xポジションを変えると瞬間移動みたいになったり、
move_towards_point使うと、ずっと移動しつづけたり・・・

3キャラ分横に移動させて止めるって方法教えてください

659 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 02:26:02 ID:+n/vdyUz]
態度というか、結果だけを求める質問をされても、
前提となる部分が何もないと回答が無数にあるため、答えようがないというのが正直なところでして。
前提となる部分を回答する人が想像して答えようとしても、えらい長くなるから面倒だしスルーってなりやすいですし。
(というか、1から作るやり方をいうようなもんですし)
こうやってるんだけどうまくいかない等、詳しい情報がないと手助けしてくれる人の可能性が低くなりやすいですよ。どうしようもないのが本音です。

660 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 02:40:14 ID:4eA37li8]
ふぎゃΣ

ええっと、前提となる部分・・・
2D格闘ゲームを作ってまして、立ち状態から
ボタンc(必殺技ボタン)を押したら、パワー消費して(これはOK)
立ち絵から、sprite(spr_special_wazaA ; サブイメージ数20)
に変化させて、キャラを右方向ゆるやかに移動させたいんですが、

if keyboard_check_pressed(ord('C')) {
 sprite_index = spr_special_wazaA ;

 image_index = 0 ;

 image_speed = 1 ;
 x += 10 ; //←ここで移動を書こうとしている
}
こうすると、右に10ほど瞬間移動したみたいにコマ飛びして表示されます。
for でやってみても一緒でしたし、move_towards_pointすると地面となる
オブジェクトと接触してる間はちょっしか移動しないし、ジャンプとかすると
そのまま画面の端まで移動しちゃうんですよね。

ゆっくり移動して目的の場所でピタっと止める方法はありますか?



661 名前:654 [2007/12/07(金) 07:17:58 ID:MOpCkhcY]
>>657
わざわざ、調べていただいて、さらに海外フォーラムまで言っていただいて
ありがとうございます。

エラー表示が消えました。ありがとうございましたm(_ _)m

662 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 22:00:35 ID:3R22D1pU]
>>660
1stepごとに少しずつ移動させたければ、ステップごとに細かく移動させないといかんのよ。
何ステップでどれくらい移動するかあらかじめ決めて、
移動するステップ数(変数名 move_cnt)と1stepで移動する移動量(変数名 dx)を計算しておく。
で、ステップイベントで、
if (move_cnt>0) {
 x += dx; //x 方向にdxだけ移動する
 move_cnt -= 1; // 移動カウントを一つ減らす
}
こんな感じにすると少しずつ移動する。面倒だけど、仕方ない。
横移動制御には hspeed を利用する方法もあるけどね。
技発動したときに、move_cnt と dx (とスプライト(sprite_index)とアニメーションスピード(image_speed))を決めてあげればいいんじゃないかなぁ。
なお、for文は1step内で繰り返し終了まで処理することになるので、上のような意味にはならない。
技発動中に操作させたくなければ、キー入力を拾う部分でそういうフラグも設けること。

663 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 02:21:58 ID:HAW715W6]
>>662
ものすごく死角から攻撃されたような衝撃です。
明日試して見ます。

そして新たに質問なんですけど、draw_sprite_stretchedでスプライトを下記の方法で表示すると一瞬で消えてしまうんですが、何が問題なのでしょう?

//X(攻撃)ボタン
if keyboard_check_pressed(ord('X')) {
 attack = 1; ren += 1 ;

 if ren == 1 {
  if !muki_chk{ sprite_index = x1_r; }else{ sprite_index = x1_l; }
  image_index = 0 ; image_speed = 1 ;
  draw_sprite_stretched(spr_attack,0,x+10,y-20,50,20);
 }else if ren == 2 {
  if !muki_chk{ sprite_index = x2_r; }else{ sprite_index = x2_l; }
  image_index = 0 ; image_speed = 1 ;
  draw_sprite_stretched(spr_attack,0,x+10,y-20,30,40);
 }
}

664 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 07:47:24 ID:qBb/GgCE]
>>663
draw系の関数はdrawイベント中にしか効果がないよ。
画面に描画する機能なんだけど、drawイベントに入った最初に背景色や背景画像で全体を描画してしまうので、描いても消されてしまう。

スプライトを拡大表示させたければ、image_xscale image_yscale という変数で指定できる。
どうしても、キャラスプライトとは他に描画したいものがあるなら draw イベントで描画関数で描こう。
ただし、draw イベントに処理を施すと、自身のキャラ(sprite_index のスプライト)が自動で描画されなくなるので、忘れずに描画させよう。

665 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 18:34:14 ID:HAW715W6]
>>664
ありがとうございます。

あ、すいません、これはdrawイベントに書いてます。
なのに一瞬で消えてしまうからナンダロウなーと。
深度を指定して試してみるっす。

666 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 20:46:46 ID:Cn07bZV4]
draw_sprite_stretchedが
if keyboard_check_pressed(ord('X')) {
}
の内側にあるから、キーを押した瞬間しか
描画されないんじゃないかな

667 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 21:00:01 ID:HAW715W6]
深度変えてもダメだった。
が、今の問題とは関係ないけどobject_set_depth(ind,depth)って、どこで宣言してもいいのかな?
(最後の方にでてくるオブジェクトで、最初のほうにでてくるオブジェクトの深度変えるとか)
心配だから、ルームに必ずおくオブジェクトに設定してるけど。

>>666
なるほど!
では、タイマーイベントで試してみます。

668 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 21:06:20 ID:HAW715W6]
ってダメだ。 drawイベントじゃなくなるorz

表示時間のばすか、消えないままにする方法ってないですか。

669 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 21:38:56 ID:Cn07bZV4]
if文の外に出すんだ

670 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 21:47:16 ID:HAW715W6]
攻撃回数でサイズを変えたいんでそれは・・・

って、そのための変数だ!
if文の中で数字を変数に入れて下のほうで宣言すればいいんだ。
やってみます。



671 名前:名前は開発中のものです。 mailto:sage [2007/12/08(土) 22:00:33 ID:HAW715W6]
・・・そもそも攻撃した時だけ表示したいんだからダメか。

画面外に表示しておいて、攻撃時(x-key press)時だけ
目的の場所に移動させるという方法にしてみる。
他に良い手がありましたら教えてください。

672 名前:名前は開発中のものです。 mailto:sage [2007/12/10(月) 15:28:56 ID:ey1ac3Xs]
>>671
何を表示したいのかいまいちイメージできないけど・・・・・別に1つのオブジェクトで処理してしまおうとしなくてもいいんでないかい?
表示用のオブジェクトを作成しておいて、アラームイベント2つ作成し1つ目にDestroy the instanceアクション(インスタンス破棄)を登録
2つ目に1つ目のアラームを起動させる記述をする。生成イベントでアラームイベントの待機時間用変数を宣言しておく
if keyboard_check_pressed(ord('X'))のブロック内のどこかでこの表示用オブジェクトを生成してやるとともにさっきのアラームイベントのタイマーセットを書き込んでやれば
このタイマーセットの間だけ表示されると思う。以下こんな感じのGML書いたらっていう案(表示オブジェ:obj_Disp 待機時間用変数:IntervalSet アラームイベントを1と2で設定したとする)
if keyboard_check_pressed(ord('X')){
//攻撃とか動作とかをずらずら記述してあるかと・・・
//-----------------
//ここより表示用オブジェ生成
var DispObjID;
DispObjID = instance_create(self.x, self.y, obj_Disp);//例として自分の原点に表示用オブジェのインスタンスを生成
DispObjID.IntervalSet = room_speed * 3;//例として3秒間表示
}

673 名前:672 mailto:sage [2007/12/10(月) 15:45:44 ID:ey1ac3Xs]
上の続き
○obj_Dispの生成イベント
var IntervalSet; //待機時間用変数の宣言
alarm[2] = 1; //破棄用アラームイベントを1ステップ後起動させるアラーム2を起動

○obj_Dispのアラーム2イベント
alarm[1] = IntervalSet;//破棄用アラームイベント起動

○obj_Dispのアラーム1イベント
>>672の記述どおりDestroy the instanceアクションをセットし、自分自身(obj_Disp)を破棄する

後はobj_Dispの描画イベントにあなたが思ってる表示をさせる記述をもりもり書き込もう
実際試してないけど>>672は似たような事してるので多分大丈夫だとおもうよ?

674 名前:672 mailto:sage [2007/12/10(月) 16:18:53 ID:ey1ac3Xs]
すまない、書き込んだ矢先に的外れなような気がしてきた。でもなんで描画イベントなの?

675 名前:名前は開発中のものです。 mailto:sage [2007/12/10(月) 21:07:39 ID:hgs58Ul1]
>>672-674
どんぴしゃで目的の動作にできた!! マジありがとー!!

格闘ゲー+α(ファイナルファイトみたいな)の作成中、
どうしても汎用的な当たり判定枠を作りたくてやってたんだけど
すぐに消えるわ表示されないわで困ってた。

必殺技で自分の分身をつくってソイツに殴らせるのをやりたかった。
(コイツにのみ当たり判定有り)
で、ぶわーっと前にまっすぐ飛ばしたりもしたかった。

一応アラームも使ってデストロイ指定してたんだけど、
連続攻撃すると分身が画面に残ったりしてた。
(animation end でデストロイ指定+表示から秒単位でデストロイ)

言われた方法でやったら、連続攻撃してもキレイに消えてくれて
なんかもう、やっとムチ振りアクションに取りかかれるッス。ありがとー!

676 名前:名前は開発中のものです。 mailto:sage [2007/12/10(月) 21:08:47 ID:hgs58Ul1]
あ、描画イベントなのは draw_うんちゃらでしか表示する方法を知らないからでした。

677 名前:名前は開発中のものです。 mailto:sage [2007/12/11(火) 00:16:53 ID:QXoJ6Zco]
すいません、GML初心者です。

if relative position (4,0) is collision free for Only solid objects
 move relative to position (4,0)
else

 if relative position (4,-8) is collision free for Only solid objects

 move relative to position (4,-8)

 move in direction 270 at most 8 till a contact with solid objects

と、ある場合GMLで記述するにはどうすれば良いのでしょうか。教えてください。

678 名前:名前は開発中のものです。 mailto:sage [2007/12/11(火) 11:20:53 ID:LOC5oPUm]
>>677
たぶん、こう。
if (place_free(x+4, y)) {
 x += 4;
} else if (place_free(x+4, y-8)) {
 x += 4;
 y += -8; // y -= 8; でもいい
 move_contact_solid(270, 8);
}

679 名前:672 mailto:sage [2007/12/11(火) 18:12:40 ID:1veI1+hN]
>>675
ぉ!できましたか。成功してよかったです。
ところで>>667のobject_set_depth(ind,depth)ですが、その使い方だとNGかと思われます。
平たくいえばオブジェクト=設計図、インスタンス=オブジェクトのコピーであり、F5,F6でデバックした時や実行ファイルで実際に表示されているものはインスタンスです。
object_set_なんちゃら()の関数はオブジェクトリソースを直接変更しにいく関数なので、ヘルプの冒頭に説明されているとおり、すでにオブジェクトのインスタンスが
生成されている場合インスタンスにオブジェクトのプロパティが格納されていて予期せぬ効果を引き起こす可能性があります。
深度を変えたい場合はインスタンスidを直接さして個々に変更するのが常套手段かと思います。>>672のobj_dispを使って説明すると
var DispObjID;//インスタンスidを保存する変数
DispObjID = instance_create(self.x, self.y, obj_Disp);//インスタンス生成instance_create()は返り値にインスタンスidを出力する
DispObjID.depth += 2;//例として設定されている深度より2奥に設定変更
こういった感じでしょうか。ヘルプによく書かれている引数のindはよく読まないと、インスタンスなのか、オブジェクトなのか、スプライトなのか混同してしまうことが
あるのでそこらへんを意識してないと「インスタンスが表示されない」+構文も間違えてないので「エラー表示がない」とかいうことになります。
自分も実際しょっちゅうやらかしてます・・・orz

680 名前:名前は開発中のものです。 mailto:sage [2007/12/11(火) 18:31:50 ID:QXoJ6Zco]
>>678
ありがとうございます。

このようなアクションをGMLに対応する一覧みたいなものは無いのでしょうか。



681 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 19:32:20 ID:I7CK0gCA]
>>680
>584にV6用のがリンクしてあるけど
他のバージョンのが欲しかったら本家フォーラムから
ttp://gmc.yoyogames.com/index.php?showtopic=334704

682 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 19:50:15 ID:Bw7drWJW]
>>681
ありがとうございます。
v7はあるようですが、v6はないようですね。

683 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 19:51:08 ID:Bw7drWJW]
すいませんありました。
数字のないほうがv6でした。

684 名前:名前は開発中のものです。 mailto:sage [2007/12/13(木) 19:56:55 ID:mOWLOq6S]
ボタンを押すと動きのあるスプライトにチェンジするようにしたのですが
チェンジの時たまに1から順にスプライトが再生されません。
何が原因でしょうか。

685 名前:名前は開発中のものです。 mailto:sage [2007/12/13(木) 21:33:32 ID:9VWX8wY5]
スプライトの表示番号を 0 にしてないんじゃない?
change sprite アクションなら、subimage ていう箇所があるからそこで設定する。
GMLなら
sprite_index = 変更したいスプライト名;
image_index = 0;
てな感じで。

686 名前:名前は開発中のものです。 mailto:sage [2007/12/13(木) 22:50:14 ID:mOWLOq6S]
全て0にしているんですがたまに動きがおかしいと思ったら5あたりから再生されてるみたいなので・・・

687 名前:名前は開発中のものです。 mailto:sage [2007/12/15(土) 12:14:12 ID:CVKb7N91]
FAQにあるヘルスを二つ表示する方法がいまいち分からないのですが詳しく教えていただけないでしょうか。

688 名前:名前は開発中のものです。 [2007/12/16(日) 13:32:59 ID:MjHgc/J/]
「現在のビューに映っている敵をすべて破壊する」
というような技を作りたいのですがどのように設定すればいいのでしょうか?

689 名前:名前は開発中のものです。 mailto:sage [2007/12/16(日) 21:34:56 ID:khbOK2Jz]
>>688
テンプレのリンクからヘルプを拾ってきて with の項目を参照すると目的の動作ができると思う。

690 名前:名前は開発中のものです。 mailto:sage [2007/12/17(月) 00:13:47 ID:SSdNo8vA]
ボタンを押したとき400後ろ(x:-400)に何もない時そこにワープ、そこにsolidオブジェクトがあるときは何もおきないという風に
できるようにしたいのですがif a position is collision freeを使ってもうまくいきません
どう設定したらいいでしょう



691 名前:名前は開発中のものです。 mailto:sage [2007/12/17(月) 00:34:29 ID:d4jiuAy+]
>>690
relativeにチェック入ってる?

if a position is collision free (x:-400 relative:check)
Jump to a given position (x:-400 relative:check)

692 名前:名前は開発中のものです。 mailto:sage [2007/12/17(月) 00:58:48 ID:1bZl34aq]
OCNから書き込めないので、携帯から失礼します。
GM7でアクションゲームを作っているのですが、
攻撃に設定したキーを一回押すと、離しても延々と攻撃が出続けてしまいます。
GMのフォーラムやここの質問で key_pressedイベントを使うと良いと書いてあったのですが
それを使っても攻撃が止まず上手くいきません。
単発で出したいのですがどうしたらいいのでしょうか。

どなたか解る方がいらっしゃいましたらご教授下さい。
文章だけではわかりにくいかもしれないのでソースをあげておきます。

www.uploadjar.com/818021

693 名前:名前は開発中のものです。 [2007/12/17(月) 01:11:36 ID:d4jiuAy+]
>>692
・その状態だと、Left(Right)を押したら rol に変数が入る。
・zを押したら、向きがLeftの場合、攻撃スプライト(左)を表示する。

で終わってる状態です。
Key Release <Left> に Set variable rol to 0
Key Release <Right> に Set variable rol to 0
をそれぞれ追加してください。

694 名前:名前は開発中のものです。 [2007/12/17(月) 01:14:21 ID:d4jiuAy+]
>>693
違いました。
忘れてください

695 名前:名前は開発中のものです。 [2007/12/17(月) 01:46:13 ID:d4jiuAy+]
>>692
・・・恥ずかしい間違いしたので問題の箇所の例として加修正してます。

www.uploadjar.com/158405

696 名前:名前は開発中のものです。 mailto:sage [2007/12/17(月) 04:52:03 ID:1bZl34aq]
>695
とても早いレス、ありがとうございます!
自在に攻撃が出来るようになり、左右移動まで作って頂いてとても嬉しいです。
本当にありがとうございました!

697 名前:名前は開発中のものです。 [2007/12/18(火) 14:25:36 ID:KuzWpsao]
下および横からはすり抜け可能で、
上からは着地可能、
かつ着地後下キーを押すと下へすり抜けられるブロックを、
Solidを外さず、かつブロック側の処理で実現したいのですが、
どうすれば良いでしょうか?

Solidを外すと、その他の判定処理で不具合が生じるので、
なるべくSolidのままで作りたいのです。
また、同時に4人のキャラクターを操作するため、
下キーを押している間と上昇中は非Solidにするという方法は使えません。

698 名前:名前は開発中のものです。 [2007/12/18(火) 16:44:34 ID:N2pESpOe]
ttp://gamdev.org/up/img/10723.zip

GM6でマリオの様なアクションゲームを作っており、乗ると落下するブロックを作ってみました。
が、普通のブロックから落下するブロックに空中移動無しで触れても落下せず、ブロックの上でジャンプしなくては落下しないのです。
原因もあまり解らずどうすれば良いのか解りません。ご教授お願いします。

699 名前:名前は開発中のものです。 mailto:sage [2007/12/18(火) 19:47:28 ID:u37r1wue]
>>698
歩いて落ちる床の上に来た場合は接触状態になっているんだが、これはコリジョンとは違うんだ。
だから、コリジョンイベントとは別に、プレイヤーと落ちる床との接触状態を調べて、条件を満たしたら床を落とす、様なことをしなきゃならん。
で、調べる方法だけど、アクションアイコンだとこれは無理。だと思う。
プレイヤのステップイベントに execute code を追加して、以下のように記述。
※空白は全角なので、コピペするなら半角に直すこと。

var id_floor; /*id_floor を、execute code 内だけ有効な変数とする */

id_floor = instance_place(x,y+1, object228);
/* instance_place()でプレイヤの直下に、object228 (落ちる床)が存在するかどうかしらべている */
/* もしプレイヤの下にobject228が存在したら、 id_floor にそのインスタンスID が代入される。 そうでなければ、 noone という値が入る */

if (id_floor != noone) {
 if (id_floor.isDrop == false) { /* このif文を付けないと、接触中常にalam[0]が10になってしまうので、必ずこの条件を入れること。 */
  id_floor.alarm[0] = 10; /* floor_id に対して、10ステップ後にアラーム0(落ちる動作)が発動するようにする */
  id_floor.isDrop = true;
 }
}
変数isDropで落ちるフラグを判定している。
これがないと、alarm[0]が接触中は常に10になってしまうんで、乗っている間落ちないことになってしまう。
変数isDropを使うことになったんで、初期化が必要。落ちる床の create イベントにvarアクションを追加、variable: isDrop、value: falseとする。
さらに、落ちる床のobj_redとのコリジョンイベント中に、varアクションを追加し、variable: isDrop、 value: true とする。
あと、コリジョンイベント中にある set vert.speed アクションは削除、でいいとおもう。

700 名前:名前は開発中のものです。 mailto:sage [2007/12/18(火) 21:18:56 ID:u37r1wue]
>>697
考えてみたんだが、結構無茶な要求・・・。
なぜなら、solidの仕様は、コリジョンイベントの前後で、2つのインスタンス間で絶対に「めり込み状態」を認めないような仕様になっているから。
solid なインスタンスとのコリジョンイベントは、以下のような流れになる。()内は solid の時だけ処理される。

[コリジョンイベント]
    ↓
(お互いのインスタンスが直前ステップの位置に戻される)
    ↓
[コリジョンイベントのアクション]
    ↓
(speed,gravity等でインスタンスの位置を調整後、お互いがコリジョンを起こしていたら、やはり直前ステップの位置に戻される)
    ↓
[end step イベント]

なもんで、その床とキャラとのコリジョンイベントでアクションを起こさないほうがよい。
てことになると、solidの意義が薄れることになるが・・・。
どうしてもコリジョンイベントも定義したいなら、コリジョンイベント中で xprevious yprevious を自前で変更してしまうか、
end step で通過可能にする処理を書くとかするしかない。いずれも、かなり面倒になりそう・・・。
それよりも、着地の処理をコリジョンイベントに頼らない方法で着地させ、
その床との接触中に下を押すと gravity を発生させ、
通過中はgravityを0にしないような処理を
キャラ側のステップイベントとかで記述するようにするようにしてみてはどうかな・・・?わかりにくかったらごめん。



701 名前:名前は開発中のものです。 mailto:sage [2007/12/18(火) 22:58:45 ID:RkfysYSU]
solidは融通が利かないから
すり抜け床には使えないな。

702 名前:697 mailto:sage [2007/12/19(水) 00:13:09 ID:SlaPK2id]
うーん、どうやら無理のようですかね。
なんとか工夫してみようと思います。

703 名前:名前は開発中のものです。 mailto:sage [2007/12/19(水) 16:31:31 ID:8LUQdUPx]
>>702
サンプルデキタ。 solid だとやはり面倒だったんで、solid じゃないやつだけど、参考になれば。
ttp://www.uploadjar.com/133957


704 名前:697 mailto:sage [2007/12/19(水) 18:35:50 ID:SlaPK2id]
ありがとうございます。
うーむ。やはりキャラ側で処理した方が良いのか・・・。
頑張ってみます。

705 名前:名前は開発中のものです。 [2007/12/19(水) 21:55:33 ID:+fFhIeoE]
>>704
キャラ側で指定する時に都合が悪くなければ、
壁用判定オブジェクトを作り、
全キャラにそれを親指定するというのはどうだろう?

706 名前:名前は開発中のものです。 [2007/12/20(木) 04:58:53 ID:Tb+MgVar]
>>699
ありがとうございます。
アクションアイコンのみでしか作った事無かったので難しいですね・・・。
頑張ってみようと思います。

707 名前:名前は開発中のものです。 [2007/12/23(日) 00:32:42 ID:U9AhK/mz]
HPの他にMPのようなものをつくりたいんですがどうやったら二つゲージを表示できますか?

708 名前:名前は開発中のものです。 mailto:sage [2007/12/23(日) 00:42:15 ID:QJlA1OEF]
自前でスクリプトを書けばできるよ。

709 名前:名前は開発中のものです。 [2007/12/23(日) 05:15:16 ID:ZiPFLJZ/]
>>707
つ「global」

710 名前:名前は開発中のものです。 [2007/12/23(日) 12:40:14 ID:U9AhK/mz]
スクリプト作るのはよくわかりません…



711 名前:名前は開発中のものです。 mailto:sage [2007/12/27(木) 15:49:32 ID:8DGio7LY]
「動きのあるスプライトA」を「動きのあるスプライトB」に、もしくは「動きのあるオブジェクトA」を「動きのあるオブジェクトB」に変えると
1フレーム目から正確に表示されず困っているのですが仕様ですか?

主人公が待機状態で攻撃キーを押すと「10フレーム目に攻撃判定を発生させる」主人公オブジェクト@に変化して
アニメーション終了時に元の主人公待機状態に戻るように設定したのですが@が5フレームあたりから始まって攻撃が異常に早く発生してすぐアニメーションが終わってしまったり
11フレームで攻撃判定がなくなってからアニメーションが開始されたりして毎回正確なフレームからスタートされません。

712 名前:名前は開発中のものです。 [2007/12/27(木) 18:16:42 ID:1ajxqRXW]
もう少し伝わりやすく書いてくれると回答者は助かります。

待機状態というのは、何もボタンを押していない状態でしょうか。
その前に何か条件が発生しているのでしょうか。

そしてバージョンは何を使っているのでしょうか。

そしてヘルプは読んでいるのでしょうか。
>>1のリンク先は見ていますか。

容易に仕様と言わないでください。

713 名前:名前は開発中のものです。 [2007/12/27(木) 18:22:56 ID:1ajxqRXW]
バージョン7及びGMLを使用している場合は、

sprite_index = spr_A
image_index = 0
image_speed = 10

2番目の image_index を変化させてください。
これは subimage の始まりを変えます。

最後の image_speed を変化させてください。
これはスピードが変わります。


再度伝えます。
リンク先のヘルプや exsample を参考してください。

714 名前:名前は開発中のものです。 [2007/12/27(木) 18:28:43 ID:1ajxqRXW]
アニメーションの再生がおかしいと感じる時は、
step の実行順番を再認識してください。
step には順番があります。

それは Begin Step から始まり、最後は Drawing です。

また、イベントの Animation End Event をうまく活用してください。

よりよい Game Maker Life を。

715 名前:HAL [2007/12/28(金) 14:58:17 ID:iAadBrLO]
自分のキャラにHPを設定ってどうやるんですか
あとオブジェクトを使ってHPを減らすようにするにはどうしたらいいんですか

716 名前:名前は開発中のものです。 mailto:sage [2007/12/29(土) 00:25:14 ID:yxji7H+p]
ヘルスのほかにもう一つゲージを作りたいのですがスクリプトを使わずアクションだけでも可能でしょうか。

717 名前:名前は開発中のものです。 mailto:sage [2007/12/29(土) 11:53:52 ID:YtFwzcBI]
ゲージくらい変を数使えばできるだろう?

718 名前:名前は開発中のものです。 mailto:sage [2007/12/29(土) 11:54:46 ID:YtFwzcBI]
変数をですw
変を数ってなんだ…orz

719 名前:名前は開発中のものです。 mailto:sage [2007/12/29(土) 17:02:58 ID:4nUjeBtr]
描写のやり方がよくわからないんです
変数で二つ目のヘルスを作っても描写で画面に表示する方法がわかりません
バージョンは5.3です

720 名前:名前は開発中のものです。 mailto:sage [2007/12/30(日) 03:17:36 ID:NSmEj/DS]
いわゆるHPとかゲージを2本表示する簡単なサンプル作ってみた
www.uploadjar.com/134394
ZでPLAYER1(赤)弾発射
XでPLAYER2(青)弾発射



721 名前:名前は開発中のものです。 mailto:sage [2007/12/30(日) 11:55:41 ID:Zqqq8hXp]
参考にさせてもらい無事完成させることができました。
ありがとうございます

722 名前:ぺしゃみゅんち [2007/12/31(月) 22:39:11 ID:G7IwY3y8]
はじめまして
私ロックマンエグゼのようなゲームを作ってみたのですが
変な異常を起こします
原因が一人ではわからないので皆さんに見ていただきたいのですが
これがそのファイルですwww.uploadjar.com/766112
バージョンは5.Aです
詳しいことはファイル内の問題点のテキストに書いてあります
よろしくお願いします。

723 名前:名前は開発中のものです。 mailto:sage [2008/01/01(火) 04:09:53 ID:HO6m3WgJ]
>>722
意味が わからない

あとエンターでプレイヤー表示だけどpressにするのをお勧めするよ一瞬押しただけでも2、3召還されるわけで

724 名前:名前は開発中のものです。 mailto:sage [2008/01/01(火) 13:01:48 ID:5Zz7hnr7]
変な異常って頭痛が痛くね?

725 名前:名前は開発中のものです。 [2008/01/01(火) 15:05:07 ID:krtrP6kC]
>>724
変と異常ってのは違う意味を指すからおかしくないんじゃね?

726 名前:名前は開発中のものです。 mailto:sage [2008/01/01(火) 18:25:13 ID:HO6m3WgJ]
>>725
異常な上に変なんじゃね

727 名前:名前は開発中のものです。 [2008/01/01(火) 20:03:22 ID:krtrP6kC]
>>726
724に言えよ

728 名前:ぺしゃみゅんち [2008/01/01(火) 21:13:12 ID:41An0v9b]
>>726さん おっしゃるとおりです
>>723さん 修正しましたがパソコンの調子が悪く
      アップロードに時間がかかるのでほかの修正箇所が
     出てきたところでアップロードさせなおしていただきます

異常とは本来右左でキャラクターを選択するのですが
怪鳥から左を押すと獅子になるはずが怪鳥のままになっているのです
また次が獅子になるはずのところでは怪鳥に飛んでしまうのです
どうしてこんなことがおきてしまうのでしょうか?
去年の9月から考えています
しかし分かりません
助けてください

729 名前:名前は開発中のものです。 mailto:sage [2008/01/02(水) 03:01:30 ID:0XzNgAng]
>>728
所々に音を鳴らす命令を入れて実験してみたところ、どうやら
オブジェクトEvsEのpress<left>を実行した後、すぐさまWvsEのpress<left>も実行しちゃってるみたい。
SvsEやNvsEのpress<right>での実行も同様。
原因は多分、1フレーム間でのインスタンス同士の実行順にあると思う。
これはもうおそらく仕様なので、次のような工夫が必要になってくる。

press<left>イベントを実行してオブジェクトを変化させたら、
変化後のオブジェクトのpress<left>イベントを、次のフレームに移りかわるまでの間は実行させないようにする。

……というわけで、フラグ変数をうまく使ってみると良いと思う。

730 名前:ぺしゃみゅんち [2008/01/02(水) 13:25:34 ID:19fPmr/N]
ありがとうございました
変数などは分からないので
押し上げイベントに変更してみました
そのほかいろいろ改良しましたらもう一度アップロードします



731 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 02:27:54 ID:KY38Ruby]
5.3Aもう3年くらい使ってるけどオブジェクトの名前とか日本語でもいけるんだな
あと描画イベントの使い途がいまさら解った
嘘みたいだろう?俺、いままで文字とかいちいちスプライト作って表示してたんだぜ?

732 名前:名前は開発中のものです。 [2008/01/04(金) 17:38:30 ID:JG5m5wPm]
日本語出力できていいなぁ・・・今から5.3Aに乗り換えようかな・・・

733 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 23:16:21 ID:cqFFi5wR]
5.3AはVistaに未対応らしいけど、単独実行が出来ないということ?
GM自体は動くみたいだけど…

734 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 02:05:40 ID:NZZVqR2v]
ビスタでフツーに作ってるけど?
実行形式はまだ試してないけど

735 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 18:55:38 ID:OjABw8Q7]
スコア表記を
「スコア:○○」のように前に出すのではなく「○○点」のように表記したいのですが可能ですか?

736 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 20:34:01 ID:nLpXdUSy]
>735
'' + string(スコア) + '点'
でできた

737 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 21:29:22 ID:OjABw8Q7]
素早い返答ありがとうございます。

738 名前:名前は開発中のものです。 mailto:sage [2008/01/08(火) 12:36:23 ID:G/0Io5dz]
なんかボールが坂をころがっていくような物理シュミはこれでつくれますか?

739 名前:名前は開発中のものです。 [2008/01/08(火) 20:46:53 ID:HXQlUjj3]
シミュレーションな

740 名前:名前は開発中のものです。 mailto:sage [2008/01/09(水) 10:04:09 ID:jHNZrdiZ]
GMJにここの書き込み反映されてるんだなスゲー



741 名前:ぺしゃみゅんち [2008/01/15(火) 21:32:09 ID:hN1kqTH6]
押し上げにしても同じことがおきました
しかし変数などが分からないのですが
誰か5.aで開ける>>729さんのいっていたようなフラグ変数
をつかったサンプルもしくは私のアップしたものに手を加えたものを
アップしてくれるとうれしいです。
ここで説明していただいてもかまいませんが
サンプルなどをアップしてくれたほうがうれしいです。
よろしくお願いします

742 名前:名前は開発中のものです。 mailto:sage [2008/01/15(火) 23:50:06 ID:DrVh3adF]
>741
簡単なやり方としては
・今キーイベントに置いている内容をアラーム0イベントに移動
(「イベントの変更」を使うと楽)
・かわりにキーイベントに「Set an alarm0」を置いて値を1にする

これでインスタンスの変化が1ステップおいて起こるようになる






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

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

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