07/12/07 02:06:08 4eA37li8
態度が悪いといって怒られるかも知れませんが助けてください
キャラをスト3の豪鬼の必殺技みたいに、横にすべりながら攻撃する時に、思い通りに動かない。
Xポジションを変えると瞬間移動みたいになったり、
move_towards_point使うと、ずっと移動しつづけたり・・・
3キャラ分横に移動させて止めるって方法教えてください
659:名前は開発中のものです。
07/12/07 02:26:02 +n/vdyUz
態度というか、結果だけを求める質問をされても、
前提となる部分が何もないと回答が無数にあるため、答えようがないというのが正直なところでして。
前提となる部分を回答する人が想像して答えようとしても、えらい長くなるから面倒だしスルーってなりやすいですし。
(というか、1から作るやり方をいうようなもんですし)
こうやってるんだけどうまくいかない等、詳しい情報がないと手助けしてくれる人の可能性が低くなりやすいですよ。どうしようもないのが本音です。
660:名前は開発中のものです。
07/12/07 02:40:14 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
07/12/07 07:17:58 MOpCkhcY
>>657
わざわざ、調べていただいて、さらに海外フォーラムまで言っていただいて
ありがとうございます。
エラー表示が消えました。ありがとうございましたm(_ _)m
662:名前は開発中のものです。
07/12/07 22:00:35 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:名前は開発中のものです。
07/12/08 02:21:58 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:名前は開発中のものです。
07/12/08 07:47:24 qBb/GgCE
>>663
draw系の関数はdrawイベント中にしか効果がないよ。
画面に描画する機能なんだけど、drawイベントに入った最初に背景色や背景画像で全体を描画してしまうので、描いても消されてしまう。
スプライトを拡大表示させたければ、image_xscale image_yscale という変数で指定できる。
どうしても、キャラスプライトとは他に描画したいものがあるなら draw イベントで描画関数で描こう。
ただし、draw イベントに処理を施すと、自身のキャラ(sprite_index のスプライト)が自動で描画されなくなるので、忘れずに描画させよう。
665:名前は開発中のものです。
07/12/08 18:34:14 HAW715W6
>>664
ありがとうございます。
あ、すいません、これはdrawイベントに書いてます。
なのに一瞬で消えてしまうからナンダロウなーと。
深度を指定して試してみるっす。
666:名前は開発中のものです。
07/12/08 20:46:46 Cn07bZV4
draw_sprite_stretchedが
if keyboard_check_pressed(ord('X')) {
}
の内側にあるから、キーを押した瞬間しか
描画されないんじゃないかな
667:名前は開発中のものです。
07/12/08 21:00:01 HAW715W6
深度変えてもダメだった。
が、今の問題とは関係ないけどobject_set_depth(ind,depth)って、どこで宣言してもいいのかな?
(最後の方にでてくるオブジェクトで、最初のほうにでてくるオブジェクトの深度変えるとか)
心配だから、ルームに必ずおくオブジェクトに設定してるけど。
>>666
なるほど!
では、タイマーイベントで試してみます。
668:名前は開発中のものです。
07/12/08 21:06:20 HAW715W6
ってダメだ。 drawイベントじゃなくなるorz
表示時間のばすか、消えないままにする方法ってないですか。
669:名前は開発中のものです。
07/12/08 21:38:56 Cn07bZV4
if文の外に出すんだ
670:名前は開発中のものです。
07/12/08 21:47:16 HAW715W6
攻撃回数でサイズを変えたいんでそれは・・・
って、そのための変数だ!
if文の中で数字を変数に入れて下のほうで宣言すればいいんだ。
やってみます。
671:名前は開発中のものです。
07/12/08 22:00:33 HAW715W6
・・・そもそも攻撃した時だけ表示したいんだからダメか。
画面外に表示しておいて、攻撃時(x-key press)時だけ
目的の場所に移動させるという方法にしてみる。
他に良い手がありましたら教えてください。
672:名前は開発中のものです。
07/12/10 15:28:56 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
07/12/10 15:45:44 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
07/12/10 16:18:53 ey1ac3Xs
すまない、書き込んだ矢先に的外れなような気がしてきた。でもなんで描画イベントなの?
675:名前は開発中のものです。
07/12/10 21:07:39 hgs58Ul1
>>672-674
どんぴしゃで目的の動作にできた!! マジありがとー!!
格闘ゲー+α(ファイナルファイトみたいな)の作成中、
どうしても汎用的な当たり判定枠を作りたくてやってたんだけど
すぐに消えるわ表示されないわで困ってた。
必殺技で自分の分身をつくってソイツに殴らせるのをやりたかった。
(コイツにのみ当たり判定有り)
で、ぶわーっと前にまっすぐ飛ばしたりもしたかった。
一応アラームも使ってデストロイ指定してたんだけど、
連続攻撃すると分身が画面に残ったりしてた。
(animation end でデストロイ指定+表示から秒単位でデストロイ)
言われた方法でやったら、連続攻撃してもキレイに消えてくれて
なんかもう、やっとムチ振りアクションに取りかかれるッス。ありがとー!
676:名前は開発中のものです。
07/12/10 21:08:47 hgs58Ul1
あ、描画イベントなのは draw_うんちゃらでしか表示する方法を知らないからでした。
677:名前は開発中のものです。
07/12/11 00:16:53 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:名前は開発中のものです。
07/12/11 11:20:53 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
07/12/11 18:12:40 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:名前は開発中のものです。
07/12/11 18:31:50 QXoJ6Zco
>>678
ありがとうございます。
このようなアクションをGMLに対応する一覧みたいなものは無いのでしょうか。
681:名前は開発中のものです。
07/12/12 19:32:20 I7CK0gCA
>>680
>584にV6用のがリンクしてあるけど
他のバージョンのが欲しかったら本家フォーラムから
URLリンク(gmc.yoyogames.com)
682:名前は開発中のものです。
07/12/12 19:50:15 Bw7drWJW
>>681
ありがとうございます。
v7はあるようですが、v6はないようですね。
683:名前は開発中のものです。
07/12/12 19:51:08 Bw7drWJW
すいませんありました。
数字のないほうがv6でした。
684:名前は開発中のものです。
07/12/13 19:56:55 mOWLOq6S
ボタンを押すと動きのあるスプライトにチェンジするようにしたのですが
チェンジの時たまに1から順にスプライトが再生されません。
何が原因でしょうか。
685:名前は開発中のものです。
07/12/13 21:33:32 9VWX8wY5
スプライトの表示番号を 0 にしてないんじゃない?
change sprite アクションなら、subimage ていう箇所があるからそこで設定する。
GMLなら
sprite_index = 変更したいスプライト名;
image_index = 0;
てな感じで。
686:名前は開発中のものです。
07/12/13 22:50:14 mOWLOq6S
全て0にしているんですがたまに動きがおかしいと思ったら5あたりから再生されてるみたいなので・・・
687:名前は開発中のものです。
07/12/15 12:14:12 CVKb7N91
FAQにあるヘルスを二つ表示する方法がいまいち分からないのですが詳しく教えていただけないでしょうか。
688:名前は開発中のものです。
07/12/16 13:32:59 MjHgc/J/
「現在のビューに映っている敵をすべて破壊する」
というような技を作りたいのですがどのように設定すればいいのでしょうか?
689:名前は開発中のものです。
07/12/16 21:34:56 khbOK2Jz
>>688
テンプレのリンクからヘルプを拾ってきて with の項目を参照すると目的の動作ができると思う。
690:名前は開発中のものです。
07/12/17 00:13:47 SSdNo8vA
ボタンを押したとき400後ろ(x:-400)に何もない時そこにワープ、そこにsolidオブジェクトがあるときは何もおきないという風に
できるようにしたいのですがif a position is collision freeを使ってもうまくいきません
どう設定したらいいでしょう
691:名前は開発中のものです。
07/12/17 00:34:29 d4jiuAy+
>>690
relativeにチェック入ってる?
if a position is collision free (x:-400 relative:check)
Jump to a given position (x:-400 relative:check)
692:名前は開発中のものです。
07/12/17 00:58:48 1bZl34aq
OCNから書き込めないので、携帯から失礼します。
GM7でアクションゲームを作っているのですが、
攻撃に設定したキーを一回押すと、離しても延々と攻撃が出続けてしまいます。
GMのフォーラムやここの質問で key_pressedイベントを使うと良いと書いてあったのですが
それを使っても攻撃が止まず上手くいきません。
単発で出したいのですがどうしたらいいのでしょうか。
どなたか解る方がいらっしゃいましたらご教授下さい。
文章だけではわかりにくいかもしれないのでソースをあげておきます。
URLリンク(www.uploadjar.com)
693:名前は開発中のものです。
07/12/17 01:11:36 d4jiuAy+
>>692
・その状態だと、Left(Right)を押したら rol に変数が入る。
・zを押したら、向きがLeftの場合、攻撃スプライト(左)を表示する。
で終わってる状態です。
Key Release <Left> に Set variable rol to 0
Key Release <Right> に Set variable rol to 0
をそれぞれ追加してください。
694:名前は開発中のものです。
07/12/17 01:14:21 d4jiuAy+
>>693
違いました。
忘れてください
695:名前は開発中のものです。
07/12/17 01:46:13 d4jiuAy+
>>692
・・・恥ずかしい間違いしたので問題の箇所の例として加修正してます。
URLリンク(www.uploadjar.com)
696:名前は開発中のものです。
07/12/17 04:52:03 1bZl34aq
>695
とても早いレス、ありがとうございます!
自在に攻撃が出来るようになり、左右移動まで作って頂いてとても嬉しいです。
本当にありがとうございました!
697:名前は開発中のものです。
07/12/18 14:25:36 KuzWpsao
下および横からはすり抜け可能で、
上からは着地可能、
かつ着地後下キーを押すと下へすり抜けられるブロックを、
Solidを外さず、かつブロック側の処理で実現したいのですが、
どうすれば良いでしょうか?
Solidを外すと、その他の判定処理で不具合が生じるので、
なるべくSolidのままで作りたいのです。
また、同時に4人のキャラクターを操作するため、
下キーを押している間と上昇中は非Solidにするという方法は使えません。
698:名前は開発中のものです。
07/12/18 16:44:34 N2pESpOe
URLリンク(gamdev.org)
GM6でマリオの様なアクションゲームを作っており、乗ると落下するブロックを作ってみました。
が、普通のブロックから落下するブロックに空中移動無しで触れても落下せず、ブロックの上でジャンプしなくては落下しないのです。
原因もあまり解らずどうすれば良いのか解りません。ご教授お願いします。
699:名前は開発中のものです。
07/12/18 19:47:28 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:名前は開発中のものです。
07/12/18 21:18:56 u37r1wue
>>697
考えてみたんだが、結構無茶な要求・・・。
なぜなら、solidの仕様は、コリジョンイベントの前後で、2つのインスタンス間で絶対に「めり込み状態」を認めないような仕様になっているから。
solid なインスタンスとのコリジョンイベントは、以下のような流れになる。()内は solid の時だけ処理される。
[コリジョンイベント]
↓
(お互いのインスタンスが直前ステップの位置に戻される)
↓
[コリジョンイベントのアクション]
↓
(speed,gravity等でインスタンスの位置を調整後、お互いがコリジョンを起こしていたら、やはり直前ステップの位置に戻される)
↓
[end step イベント]
なもんで、その床とキャラとのコリジョンイベントでアクションを起こさないほうがよい。
てことになると、solidの意義が薄れることになるが・・・。
どうしてもコリジョンイベントも定義したいなら、コリジョンイベント中で xprevious yprevious を自前で変更してしまうか、
end step で通過可能にする処理を書くとかするしかない。いずれも、かなり面倒になりそう・・・。
それよりも、着地の処理をコリジョンイベントに頼らない方法で着地させ、
その床との接触中に下を押すと gravity を発生させ、
通過中はgravityを0にしないような処理を
キャラ側のステップイベントとかで記述するようにするようにしてみてはどうかな・・・?わかりにくかったらごめん。
701:名前は開発中のものです。
07/12/18 22:58:45 RkfysYSU
solidは融通が利かないから
すり抜け床には使えないな。
702:697
07/12/19 00:13:09 SlaPK2id
うーん、どうやら無理のようですかね。
なんとか工夫してみようと思います。
703:名前は開発中のものです。
07/12/19 16:31:31 8LUQdUPx
>>702
サンプルデキタ。 solid だとやはり面倒だったんで、solid じゃないやつだけど、参考になれば。
URLリンク(www.uploadjar.com)
704:697
07/12/19 18:35:50 SlaPK2id
ありがとうございます。
うーむ。やはりキャラ側で処理した方が良いのか・・・。
頑張ってみます。
705:名前は開発中のものです。
07/12/19 21:55:33 +fFhIeoE
>>704
キャラ側で指定する時に都合が悪くなければ、
壁用判定オブジェクトを作り、
全キャラにそれを親指定するというのはどうだろう?
706:名前は開発中のものです。
07/12/20 04:58:53 Tb+MgVar
>>699
ありがとうございます。
アクションアイコンのみでしか作った事無かったので難しいですね・・・。
頑張ってみようと思います。
707:名前は開発中のものです。
07/12/23 00:32:42 U9AhK/mz
HPの他にMPのようなものをつくりたいんですがどうやったら二つゲージを表示できますか?
708:名前は開発中のものです。
07/12/23 00:42:15 QJlA1OEF
自前でスクリプトを書けばできるよ。
709:名前は開発中のものです。
07/12/23 05:15:16 ZiPFLJZ/
>>707
つ「global」
710:名前は開発中のものです。
07/12/23 12:40:14 U9AhK/mz
スクリプト作るのはよくわかりません…
711:名前は開発中のものです。
07/12/27 15:49:32 8DGio7LY
「動きのあるスプライトA」を「動きのあるスプライトB」に、もしくは「動きのあるオブジェクトA」を「動きのあるオブジェクトB」に変えると
1フレーム目から正確に表示されず困っているのですが仕様ですか?
主人公が待機状態で攻撃キーを押すと「10フレーム目に攻撃判定を発生させる」主人公オブジェクト①に変化して
アニメーション終了時に元の主人公待機状態に戻るように設定したのですが①が5フレームあたりから始まって攻撃が異常に早く発生してすぐアニメーションが終わってしまったり
11フレームで攻撃判定がなくなってからアニメーションが開始されたりして毎回正確なフレームからスタートされません。
712:名前は開発中のものです。
07/12/27 18:16:42 1ajxqRXW
もう少し伝わりやすく書いてくれると回答者は助かります。
待機状態というのは、何もボタンを押していない状態でしょうか。
その前に何か条件が発生しているのでしょうか。
そしてバージョンは何を使っているのでしょうか。
そしてヘルプは読んでいるのでしょうか。
>>1のリンク先は見ていますか。
容易に仕様と言わないでください。
713:名前は開発中のものです。
07/12/27 18:22:56 1ajxqRXW
バージョン7及びGMLを使用している場合は、
sprite_index = spr_A
image_index = 0
image_speed = 10
2番目の image_index を変化させてください。
これは subimage の始まりを変えます。
最後の image_speed を変化させてください。
これはスピードが変わります。
再度伝えます。
リンク先のヘルプや exsample を参考してください。
714:名前は開発中のものです。
07/12/27 18:28:43 1ajxqRXW
アニメーションの再生がおかしいと感じる時は、
step の実行順番を再認識してください。
step には順番があります。
それは Begin Step から始まり、最後は Drawing です。
また、イベントの Animation End Event をうまく活用してください。
よりよい Game Maker Life を。
715:HAL
07/12/28 14:58:17 iAadBrLO
自分のキャラにHPを設定ってどうやるんですか
あとオブジェクトを使ってHPを減らすようにするにはどうしたらいいんですか
716:名前は開発中のものです。
07/12/29 00:25:14 yxji7H+p
ヘルスのほかにもう一つゲージを作りたいのですがスクリプトを使わずアクションだけでも可能でしょうか。
717:名前は開発中のものです。
07/12/29 11:53:52 YtFwzcBI
ゲージくらい変を数使えばできるだろう?
718:名前は開発中のものです。
07/12/29 11:54:46 YtFwzcBI
変数をですw
変を数ってなんだ…orz
719:名前は開発中のものです。
07/12/29 17:02:58 4nUjeBtr
描写のやり方がよくわからないんです
変数で二つ目のヘルスを作っても描写で画面に表示する方法がわかりません
バージョンは5.3です
720:名前は開発中のものです。
07/12/30 03:17:36 NSmEj/DS
いわゆるHPとかゲージを2本表示する簡単なサンプル作ってみた
URLリンク(www.uploadjar.com)
ZでPLAYER1(赤)弾発射
XでPLAYER2(青)弾発射
721:名前は開発中のものです。
07/12/30 11:55:41 Zqqq8hXp
参考にさせてもらい無事完成させることができました。
ありがとうございます
722:ぺしゃみゅんち
07/12/31 22:39:11 G7IwY3y8
はじめまして
私ロックマンエグゼのようなゲームを作ってみたのですが
変な異常を起こします
原因が一人ではわからないので皆さんに見ていただきたいのですが
これがそのファイルですURLリンク(www.uploadjar.com)
バージョンは5.Aです
詳しいことはファイル内の問題点のテキストに書いてあります
よろしくお願いします。
723:名前は開発中のものです。
08/01/01 04:09:53 HO6m3WgJ
>>722
意味が わからない
あとエンターでプレイヤー表示だけどpressにするのをお勧めするよ一瞬押しただけでも2、3召還されるわけで
724:名前は開発中のものです。
08/01/01 13:01:48 5Zz7hnr7
変な異常って頭痛が痛くね?
725:名前は開発中のものです。
08/01/01 15:05:07 krtrP6kC
>>724
変と異常ってのは違う意味を指すからおかしくないんじゃね?
726:名前は開発中のものです。
08/01/01 18:25:13 HO6m3WgJ
>>725
異常な上に変なんじゃね
727:名前は開発中のものです。
08/01/01 20:03:22 krtrP6kC
>>726
724に言えよ
728:ぺしゃみゅんち
08/01/01 21:13:12 41An0v9b
>>726さん おっしゃるとおりです
>>723さん 修正しましたがパソコンの調子が悪く
アップロードに時間がかかるのでほかの修正箇所が
出てきたところでアップロードさせなおしていただきます
異常とは本来右左でキャラクターを選択するのですが
怪鳥から左を押すと獅子になるはずが怪鳥のままになっているのです
また次が獅子になるはずのところでは怪鳥に飛んでしまうのです
どうしてこんなことがおきてしまうのでしょうか?
去年の9月から考えています
しかし分かりません
助けてください
729:名前は開発中のものです。
08/01/02 03:01:30 0XzNgAng
>>728
所々に音を鳴らす命令を入れて実験してみたところ、どうやら
オブジェクトEvsEのpress<left>を実行した後、すぐさまWvsEのpress<left>も実行しちゃってるみたい。
SvsEやNvsEのpress<right>での実行も同様。
原因は多分、1フレーム間でのインスタンス同士の実行順にあると思う。
これはもうおそらく仕様なので、次のような工夫が必要になってくる。
press<left>イベントを実行してオブジェクトを変化させたら、
変化後のオブジェクトのpress<left>イベントを、次のフレームに移りかわるまでの間は実行させないようにする。
……というわけで、フラグ変数をうまく使ってみると良いと思う。
730:ぺしゃみゅんち
08/01/02 13:25:34 19fPmr/N
ありがとうございました
変数などは分からないので
押し上げイベントに変更してみました
そのほかいろいろ改良しましたらもう一度アップロードします
731:名前は開発中のものです。
08/01/04 02:27:54 KY38Ruby
5.3Aもう3年くらい使ってるけどオブジェクトの名前とか日本語でもいけるんだな
あと描画イベントの使い途がいまさら解った
嘘みたいだろう?俺、いままで文字とかいちいちスプライト作って表示してたんだぜ?
732:名前は開発中のものです。
08/01/04 17:38:30 JG5m5wPm
日本語出力できていいなぁ・・・今から5.3Aに乗り換えようかな・・・
733:名前は開発中のものです。
08/01/04 23:16:21 cqFFi5wR
5.3AはVistaに未対応らしいけど、単独実行が出来ないということ?
GM自体は動くみたいだけど…
734:名前は開発中のものです。
08/01/05 02:05:40 NZZVqR2v
ビスタでフツーに作ってるけど?
実行形式はまだ試してないけど
735:名前は開発中のものです。
08/01/06 18:55:38 OjABw8Q7
スコア表記を
「スコア:○○」のように前に出すのではなく「○○点」のように表記したいのですが可能ですか?
736:名前は開発中のものです。
08/01/06 20:34:01 nLpXdUSy
>735
'' + string(スコア) + '点'
でできた
737:名前は開発中のものです。
08/01/06 21:29:22 OjABw8Q7
素早い返答ありがとうございます。
738:名前は開発中のものです。
08/01/08 12:36:23 G/0Io5dz
なんかボールが坂をころがっていくような物理シュミはこれでつくれますか?
739:名前は開発中のものです。
08/01/08 20:46:53 HXQlUjj3
シミュレーションな
740:名前は開発中のものです。
08/01/09 10:04:09 jHNZrdiZ
GMJにここの書き込み反映されてるんだなスゲー
741:ぺしゃみゅんち
08/01/15 21:32:09 hN1kqTH6
押し上げにしても同じことがおきました
しかし変数などが分からないのですが
誰か5.aで開ける>>729さんのいっていたようなフラグ変数
をつかったサンプルもしくは私のアップしたものに手を加えたものを
アップしてくれるとうれしいです。
ここで説明していただいてもかまいませんが
サンプルなどをアップしてくれたほうがうれしいです。
よろしくお願いします
742:名前は開発中のものです。
08/01/15 23:50:06 DrVh3adF
>741
簡単なやり方としては
・今キーイベントに置いている内容をアラーム0イベントに移動
(「イベントの変更」を使うと楽)
・かわりにキーイベントに「Set an alarm0」を置いて値を1にする
これでインスタンスの変化が1ステップおいて起こるようになる
743:名前は開発中のものです。
08/01/18 02:01:25 CrDQFjAi
追尾ミサイルを作っているのですが
直角や180度いっきに回転してしまうんですが
クルーってかんじに遠回りして追尾させたいんですが
どうすればできますでしょうか
744:名前は開発中のものです。
08/01/19 00:58:07 dhI4eC+v
登録するのが嫌で5.3Aを落としてきたけど、XPで不便な事って有るのか?
745:名前は開発中のものです。
08/01/19 02:10:04 pvbjWxud
>>744
あるとすれば
・6以降の新しい機能が使えない
・レジスト機能使う時に、登録しにいかなくちゃダメ
ってくらいだな。
746:名前は開発中のものです。
08/01/19 06:44:46 lpPp39mj
URLリンク(gamdev.org)
日本語化辞書
途中だけど、続き誰か頼む
使い方教えてとかいう、ググれない厨は落とさないように
747:名前は開発中のものです。
08/01/19 15:34:14 Rw9P3/DK
なるほど、日本語訳付きで練習する分には問題ないと思っても良いって事か
748:名前は開発中のものです。
08/01/22 21:09:08 45T81GjC
>>743
今どうやってるん?
749:名前は開発中のものです。
08/01/22 21:17:39 ocbbdzjm
7が出てからもうすぐ一年かぁ
本家では新しいの出るんかな
750:名前は開発中のものです。
08/01/22 21:22:18 NoSS/6O8
>>748
いきずまってます\(^o^)/
動いてる方向を取って1/3ステップ進ませて今進んでる方向がうんたらかんたら
751:名前は開発中のものです。
08/01/23 02:48:32 Q1tjyTbC
>>746
ものすごくGJ
752:名前は開発中のものです。
08/01/23 04:18:28 b5xhxs/k
>>750
すまんが現状どうやってるのかよくわからん
角度を常に変数でもたせておくなりして三角関数使わないと難しいんじゃないだろうか
俺ならミサイルの単位時間に動かせる角度と距離固定して目標追わせるかな。
753:名前は開発中のものです。
08/01/24 03:09:34 n00gmxln
前回692です。
また製作の壁にぶつかってしまい困っています。
GM7でアクションゲームをつくっています。
現在、ロックマンのように、自キャラが移動をしながら攻撃ができるようになっています。
これを魔界村のように、移動中に攻撃ボタンを押したら、立ち止まって攻撃するようにしたいのですが、どうすれば良いでしょうか?
ソースをあげておきますので、
どなたか解る方がいらっしゃいましたらご教授下さい。
URLリンク(www11.axfc.net)
Keyword(DLパス)は0011です。
754:748
08/01/24 12:00:40 gZRHXEEh
>>750
自分>>34なんだけどうpしてるやつの最初の方にホーミングミサイル撃つ敵
つくってあるんだけどこんな感じの作りたいの?
755:名前は開発中のものです。
08/01/24 12:22:14 gZRHXEEh
>>753
obj_usagiオブジェのキーボードイベント<left><right>のアクション全体をcan_attack変数が1の時だけ実行するように
If a variable has a valueを置いてみたらいいんじゃない?
756:753
08/01/27 02:40:32 v3yvH1+7
>>755
すばやい回答ありがとうございます。
無事自キャラが止まって攻撃が出来るようになりました!
半月間も悩んでたので本当に助かりました。
ありがとうございました。
757:729
08/01/27 04:15:44 PCXtfTLD
>>742
あ……なるほど。
pressKeyで即オブジェ変更するんじゃなくてAlarmイベントで実行させれば
複雑にフラグ変数を使わずに済みますね。勉強になります。
758:名前は開発中のものです。
08/01/29 11:37:55 n2eeRZD+
Scriptのエクスポートみたいに、
オブジェクトのソースを出力ってできますか?
オブジェクトがたくさんあると手作業ではちょっと厳しい...
759:名前は開発中のものです。
08/01/29 21:35:15 fH/FU5dj
Editメニューの最後にある「Show Object Information」
名前からは想像がつかないが、全オブジェクトの情報を
一気に出力してくれるというすぐれモノだ。
オブジェクトたくさん作りすぎてるとエラーで死ぬけどな!
760:名前は開発中のものです。
08/01/29 23:51:12 n2eeRZD+
>>759
止まった\(^0^)/
450個もオブジェクトがありゃそりゃ固まるか。
761:名前は開発中のものです。
08/01/31 18:22:51 fnpWL05f
>761
ばーか
762:名前は開発中のものです。
08/01/31 22:04:15 TXruG4et
>>762
( ^ω^)…
763:名前は開発中のものです。
08/02/01 00:34:05 a4c4UVam
761 名前は開発中のものです。 [sage] 2008/01/31(木) 18:22:51 ID:fnpWL05f - NEW! -
>761
ばーか
762 名前は開発中のものです。 [sage] 2008/01/31(木) 22:04:15 ID:TXruG4et - NEW! -
>>762
( ^ω^)…
764:名前は開発中のものです。
08/02/08 17:38:06 zFVnBZNt
うーん・・以前にも聞いたので
また聞くのはちょっと気が引けるんですが、
Solidのチェックを外さずに下からすり抜けられる床ってのは
やっぱり無理なんでしょうか。
諸事情で「キャラがブロックより上にいる時だけSolidにする」という方法が使えません。
765:名前は開発中のものです。
08/02/08 18:50:11 2GE6uT/l
マニュアル読んできた。
solid Whether the instance is solid. This can be changed during the game.
(solid インスタンスがsolidかどうか。ゲーム中に変更可能)
solidかどうかの判定は変更できるようなので、キャラのy値を取得して、
「キャラのy値がブロックのy値よりも低いとき、solidをfalseにする」
「else {solidをtrueにする}」
って組んだらどうかな?
766:名前は開発中のものです。
08/02/08 19:08:26 zFVnBZNt
>>765
前提として4キャラ同時に操作するということを書いてませんでした、すいません。
1キャラ操作のアクションゲームならそうするんですが、
多キャラを操作するときなどに、他のキャラがブロックの上にいるときとかに
Solidを解除すると乗っているキャラが落ちてしまうので悩んでいます。
767:名前は開発中のものです。
08/02/08 19:10:03 mtgOpTzW
>>766
ifを何個か重ねたらだめなのか?キャラごとに
768:名前は開発中のものです。
08/02/08 19:29:09 zFVnBZNt
そうすると1Pが乗ってて4Pが下にいるときとかに、
4Pが床(足場)にしたからすり抜けようとしたときにぶつからない?
1Pが上にいるからSolidはONになってるはずだし
769:名前は開発中のものです。
08/02/08 20:41:16 2GE6uT/l
ifを重ねて場合分けしようにも、キャラ別に判定用オブジェクトを作るにしても、
Solid同士の衝突は貫通しない以上、1つでもSolidがあったら下のやつは上にあがれなくなると思うぞ。そのためのSolidなんだし。
オブジェクト別にアクションを変えたいのなら、Solidは解除しておいて、状況に応じて通行可/不可が切り替わるように考える必要があると思う。
~チラシの裏~
発想を逆転してみた。
ブロックはSolidで固定。キャラのSolid判定を変えてみるという考え。
キャラがブロックの上にいるときはSolid、下ならNon-Solid。
これなら下から上ならすり抜け、上から下なら止まるというのを実現できるのじゃないかと。
……でもこれをやると、ブロックは縦方向に見て1つまでしか置けない。
ついでに多分、キャラも床もSolidにして床の上を自由に歩けるようにしてあるんだと思うから、
これをやると床をすり抜けどこまでも落ちていく。
うん。駄目だ。
~チラシの裏~
770:名前は開発中のものです。
08/02/08 20:48:06 zFVnBZNt
あ。
自己解決した・・!
結局「キャラがブロックより上にいる時だけSolidにする」という方法が使えるということに気がついたというオチ・・。
Solidに設定しててもCollisionイベント設定しなかったら素通りするから、
4人いたらそれぞれのプレイヤー用の床を作って4つ重ねればいいのか。。
2ヶ月くらい悩んだけどなんか思いついてみれば簡単だった・・・。
URLリンク(www.uploda.org)
考えて頂いてありがとうございました。
771:名前は開発中のものです。
08/02/08 20:51:40 2GE6uT/l
ってなんだ、Solidでも素通りするのか。
772:名前は開発中のものです。
08/02/10 01:31:29 JMvutfpq
>>766 4キャラ同時に操作ってニコニコアクションの人か?
違っても製作頑張れ。完成するといいな。
773:名前は開発中のものです。
08/02/12 00:35:49 iUX9zyeT
>>770
このレスはアクションの人だったんだな(´・ω・`)
774:名前は開発中のものです。
08/02/12 22:51:39 iUX9zyeT
いろんなroomを表示させることはできますでしょうか?
775:名前は開発中のものです。
08/02/12 22:58:47 54CFVRXr
>>774
残念だがそれは仕様上ムリだと思ふ
776:名前は開発中のものです。
08/02/12 23:04:06 iUX9zyeT
>>775
ありがとうだぜ
ちょっとURLリンク(gamemaker.main.jp)を応用してくるぜ
777:名前は開発中のものです。
08/02/14 22:58:45 3EjNgEsT
>>774
一つのルームに4種類部屋作って>>776の方法で分割表示すれば良いんじゃね?
778:名前は開発中のものです。
08/02/14 23:29:42 bjVjEw1+
>>777
ヴァージョンが5だったことを忘れてたんだぜww
779:名前は開発中のものです。
08/02/15 03:04:43 5T9VWkup
sprite_replaceで外部からファイルを読み込みまくってたら、
ロード時間が半端なく長くなった上にメモリ浪費が激しすぎる・・。
時間とメモリを節約する方法ってないですかね・・・
780:名前は開発中のものです。
08/02/15 03:21:07 BAZ3rUXc
一度に全部読み込んでる?
もしそうなら、room内で使う分だけ読み込むようにしてみるとか。。。
たしか、使用していない画像や音声のリソースをメモリから消去するような関数が用意されていたと思うんで、
roomを変更する時などに、必要がなくなったリソースをメモリから削除するようにしてみるとか。。。
781:名前は開発中のものです。
08/02/15 13:06:06 5T9VWkup
メモリ消費は>>780を参考にいろいろやってみて軽減は出来ました。
しかしロード時間が死ねる・・。sprite_replaceを使う以上仕方ないのかなぁ。
ゲーム内に組み込もうにもキャラ数が40人くらいいるから、
exeにまとめると実行ファイルサイズとスプライト数がすごいことになる。
782:名前は開発中のものです。
08/02/15 16:41:13 sRLBKt+9
>>781
読み込むものを減らしたらどうでしょか
2つか3つ本体作って
全部読み込みバージョン
ちょっと読み込みバージョン
最小限バージョン
とか(´・ω・`)
783:名前は開発中のものです。
08/02/15 17:20:59 hkVzw0EY
データを外部から取り込むようにして実行ファイルを小さくすると、
・起動が早いかわりに、リソースの読み込みでやや時間をとる。
・修正、アップデートが軽量化できる。(新しい実行ファイルと追加データを上書き)
逆に全部をexeにまとめると、
・起動が遅いがその後のロードは不要(または軽減?)。
・中に詰め込んだデータに容易にアクセスできない(ユーザーからのリソースの書き換え防止)
・しかし、アップデートは差分の書き換えではなく「新しいバージョンを丸ごと入手」
……といった解釈で合っていますか?
間違っていたり、もっと詳しい説明があったら是非お願いします。
(もしこうだったら、修正/拡張パッチとかが作れるように、外部からの取り込みの方がいいのかなぁ)
784:名前は開発中のものです。
08/02/15 21:54:23 6M2Mj1CC
ホモの友達がいるんだが
そいつベッドの下にビンに入った液体チョコレートと筆を置いてて
これなんだ?って聞いたら
「これで彼といっしょにお互いの体に塗ってなめっこするの♪」
って言われた。
785:名前は開発中のものです。
08/02/17 04:31:08 /MDHcIsH
初歩的な質問ですが
顔や手がブロックに引っかかって落ちなかったり、
端っこの壁に行くとめり込んででられなくなったりします・・・
コリジョンの判定をどうすればいいのでしょうか
URLリンク(gamdev.org)
786:名前は開発中のものです。
08/02/17 06:06:40 7sK4ZglN
>>785
マスクを使えばおk
URLリンク(www6.atpages.jp)
787:名前は開発中のものです。
08/02/17 11:03:46 wXzkSK3W
失礼します。
GML上において、score(GM側にデフォルトで設けられているスコア変数)に
値を代入させる方法がわからず、困っています。
ヘルプは一通り読んだつもりで、私は次のような記述を行いましたが…
score =(適当な値);
global.score =(適当な値);
エラーになってしまいます。
GMLを使ってscore変数の値を変えるにはどのようにすれば良いのでしょうか?
788:787
08/02/17 11:10:44 wXzkSK3W
あぁ、言い忘れていました…
バージョンは6.1です。
789:名前は開発中のものです。
08/02/17 12:32:39 yekEWnFq
>>787
やったことないが
グローバルいらないんじゃね?
790:787
08/02/17 14:13:20 wXzkSK3W
"global."の有無に関わらず、"Variable name expected"というエラーメッセージが出てきます。
試しに今、新規作成でscore+=1と記述してみたところ、これは難なく動作しました。
ということは、このエラーの原因は別の箇所にあると考えられそうですので
一旦ソースを見直してこようと思います。
……何処がダメなのか想像がつかないけど……
791:名前は開発中のものです。
08/02/17 15:28:06 yekEWnFq
score = ?;
score=?;
両方試してみた?
後スペルチェックとか
792:名前は開発中のものです。
08/02/17 15:48:55 F5p9Y4ne
"Variable name expected" が出るのはたいてい
"score" をすでに変数名以外に使っちゃっているとき。
変数名が青じゃなくて紫になってたらそれだ。
オブジェクトとかスプライトに "score" って付けてない?
793:787
08/02/17 19:47:57 wXzkSK3W
>>792
確かに紫になっていました。でも"score"なんて名前を付けた覚えはない……
と思ってたらありましたよ、"score"という名のルームが!
気をつけて名前を付けてきたはずだから、こんな間違いはしていないと思い込んでいました…
>>791
そのようなスペースの有無によって引き起こされるバグは
ほとんどないと思っていますが、どうなんでしょう?
お二人方、どうもありがとうございました。
794:名前は開発中のものです。
08/02/17 21:31:14 H3L0qkMh
>>786
ありがとうございます
そして重ねて質問なんですが、
マスクの使い方も教えてもらえないでしょうか?
795:名前は開発中のものです。
08/02/18 06:03:43 P6ufyrMd
>>794
マスク=当たり判定かな、違ってたらすまん
でも俺説明下手だから
URLリンク(gamemaker.main.jp)
を参考にするといいんだぜ!
796:779
08/02/18 14:05:15 wD+9YlvR
ロード時間の件ですが、
スプライトのロードよりも、
キャラ変数の用意に膨大な時間がかかっていることが判明。
execute_fileで大きなファイルをロードすると時間かかるんですね・・
797:名前は開発中のものです。
08/02/18 16:30:52 IGcs7e6P
>>556でも指摘されてたけど、
ゲーム実行時に GMLコードの書かれた文字列(またはテキストファイル等)を実行するのはかなり時間コストがかかるよ。
単純に考えても、gmソースにあらかじめ組み込んでおくのに比べて、
exe側がコードを解析して、(GM流の)バイトコードに変換する処理が増えるんだし。。。
変数の代入程度なら、自前でデータファイルを作って処理をしたほうが良いだろうね。
バイナリ形式のほうがよいかもしれない。
798:名前は開発中のものです。
08/02/18 21:26:12 ZmedX/dg
>>795
解決できました!
ありがとうございます!
799:名前は開発中のものです。
08/02/18 22:39:56 tcJyICZc
>>796
変数を使いまくるとロード長くなる?
どのくらい変数使ってるの?
800:779
08/02/19 22:43:31 x/RhMfeZ
あー、いや、変数の用意自体は一瞬なんだけど、
execute_fileでやってるから変数が多くなるとテキストも長くなって
時間がかかってしまうわけで。ゲーム内部に入れてしまえば0.1秒もかからないし、
配布時には内部に入れてしまおうかなぁと思ってる。
今数えたら5000個くらいだった。それ×4。
なんかこの設計自体に問題がある気がしてならない。
801:名前は開発中のものです。
08/02/21 10:47:14 QLrlpKAR
すいません、擬似的に空間の歪みを表現しようと思い、
sprite_create_from_screenとsprite_assignで
ゆがませる空間のスプライトを作成し、
sprite_set_alpha_from_spriteをかまして
そのスプライトを用いたオブジェクトを拡大/縮小しながら表示させ、
オブジェクト消失時にsprite_deleteってやってるんですが、
この処理するたびに物理メモリが一定量ずつ減っていってしまいます。
sprite_deleteしてるからメモリは開放されるはずなのに…
何故でしょうか。
802:名前は開発中のものです。
08/02/21 12:22:17 TNE50/I9
>>801
書かれていることだけをこちらでver 6.1にて実験してみたけど、
処理するごとにメモリ消費されてしまう現象は確認できなかった....
ちなみに、こんなソースです。レジストバージョンしか動きません。F1キーで略説でます。
URLリンク(gamdev.org)
sprite_create_from_screen() で作成したスプライトも全て sprite_delete() されてるか再度確認されてみては。
803:801
08/02/21 13:03:03 QLrlpKAR
素早い返答有難うございます。
帰宅してから試してみることにします。
804:801
08/02/21 18:05:02 hrX+JUXR
>802
只今帰宅し、サンプル確認してみました。
おおおおーーーメモリが減らない!!
背景からスプライトを置き換える際にsprite_delete(ind);を
入れてなかった点と、preloadがtrueになっていた点あたりが
問題…だったのかもしれないです。
さっそく作ってるゲームに入れてみて更に確認してみます!
有難うございました!!
805:802
08/02/22 00:23:23 9TIiCCE7
おお、お役に立ててよかった。
おそらく原因は、sprite_delete() を入れていなかった、もしくはタイミングが悪かった点でしょうね。
問題が解決できそうで何よりです。開発がんばってください。
806:名前は開発中のものです。
08/02/22 00:58:19 GgtMRHOI
公式は、7正式出てから動きまったくなし?
807:名前は開発中のものです。
08/02/22 22:28:56 EnGdlCfo
>>806
だね
もうあれでほとんど安定してるし
得にバグとか更新とかもないし
更新されるのは8が出てからかもね
8が出るのも相当後だと思うけど
ところでGameMakerって外部ファイルtxtとかって読み込めたっけ
808:名前は開発中のものです。
08/02/22 23:22:21 GgtMRHOI
>>807
今出先だからわかんないけど、上の方で外部ファイルから変数を読み込んでって話題があったときにためしたら出来た記憶がある。
809:名前は開発中のものです。
08/02/23 21:16:37 3ZZOv+FT
Draw the value of scoreの使い方がよく分からない・・・
誰か詳しく説明してください。お願いします。
810:名前は開発中のものです。
08/02/24 00:38:27 410jBEd1
>>809
使い方と言っても、xとyにスコア表示したい座標入れるだけなんだけど…
とりあえず(0, 0)のままでも画面左上に何かしら出るでしょ。
アクションをDrawイベントに置くこと、Visibleにチェック付けておくこと、
オブジェクトをルームの中に置いとくこと、以上3点忘れずに。
811:809
08/02/24 10:24:15 +SnWXLhW
>>810
Visibleにチェックをつけるという意味がよくわからなかったが、
ちゃんと動きました。ありがとうございます。
812:名前は開発中のものです。
08/02/24 11:48:45 2Py4k7Q8
Object Properties
Name: [ ]
Sprite
[ ]
[ New ] [ Edit ]
□Visible □Solid
Depth: [ ]
(以下略)
↑のVisibleのチェックボックスのこと。
デフォでチェックが入ってるから問題無かったんだろうけど。
これにチェックが入ってなかったら、例え何をしても何も表示されない。
動いたらしいしもういいんだろうけど、一応念の為。
うっかりしてると>>810が言った3つを忘れてしまいがち。
見直してて原因を見つけたとき「そりゃ表示されるわけねーわなw」となる。
813:名前は開発中のものです。
08/02/25 16:38:49 N0LtIPkd
オブジェクトのイベントにある
outside view が働いていない気がする
814:名前は開発中のものです。
08/02/25 17:48:56 NE2+oADS
>>813
バグだろうねぇ。公式のコミュニティにも話題が出てたよ。
URLリンク(gmc.yoyogames.com)
現状だと、outside view イベントのかわりに boundary view イベントを使って、
そこで以下のコードを書くと、期待通りに動くようだ。
/* view 0 に対して、処理する場合 */
if (x-sprite_xoffset+sprite_width < view_xview[0]
|| x-sprite_xoffset >= view_xview[0]+view_wview[0]
|| y-sprite_yoffset+sprite_height < view_yview[0]
|| y-sprite_yoffset >= view_yview[0]+view_hview[0]) { // スプライトが完全に view から外に出たかどうかを判定している
// ここにコードを書く
}
コードが書けないなら、 if の()内の式全てを
Test Expression (?の描いてある八角形のアイコン) の expression に貼り付ければOK。
ステップイベント内で同様にやっても多分OKだが、
毎ステップ判定処理をしてしまうんで、処理コスト的に不利だろう。
815:名前は開発中のものです。
08/02/27 15:04:31 imokwZIU
中国奇形動物の画像【苦手な方は閲覧を御遠慮下さい】
URLリンク(d.hatena.ne.jp)
鼻二つに眼が三つの子牛. 頭一つに身体二つの子豚. 単眼の子豚. もはや原形を
とどめない子豚. 4本足のヒヨコ・・・ (ここではヒトの奇形は詳しく紹介しませんが、
中国語「畸形」(簡体字・繁体字ともに)でインターネット検索をしたら・・・)
奇形や病死した牛や豚も加工されてしまえば見分けが付きません。
URLリンク(detail.chiebukuro.yahoo.co.jp)
中国、奇形児発生の原因とみられる重金属汚染
URLリンク(iwasero.blog66.fc2.com)
・毒性の強い添加物や防腐剤を使用するケースが多い
・重さをごまかすのに牛や豚に水を注入したり、大量の食塩を食べさせる
【海外】中国:環境汚染
URLリンク(blog.livedoor.jp)
腐った上海の海、必見グーグルアース
URLリンク(temple.iza.ne.jp)
地球上いたるところに湖がありますが、中国の湖ばかりが蛍光色に
光り輝いています。異常です。
中国の蛍光色7色に輝く河川
URLリンク(hinden.at.webry.info)
病気になったら抗生物質に汚染された魚を食べて治すという。すごい「薬膳」ですね。
816:名前は開発中のものです。
08/02/28 18:44:34 o8q2cNq4
ちょっと興味あるけど自機の移動も作れないしGMLとかわけわかめでもうだめだ
817:名前は開発中のものです。
08/02/29 02:55:26 x+l1o480
強制はしないけど、興味があるんだったら、いきなり作りたいものを作ろうとせずに、まずはチュートリアルに沿って一度作ってみるといいよ。
逆に、作りたいものを作るためにはどんなことを覚えなきゃいけないか、って感じで入ると滅入ると思う。
チュートリアルの通りに作って、わからなくなったらExampleを見て、どうやってるのかを参考にしたり。
GMLを使わなくても、シンプルなゲームなら十分作れるから、GMLに触れるのはある程度慣れてからで十分。
最初のうちは、「何が起きたらどれをどうする」といったことを決めていく、と考えるといいかもね。
右を押したら右に行く、弾が自機に当たったら爆発する、とか。
「チュートリアルなんて面倒」とか思わずに。無駄にはならないよ。
818:名前は開発中のものです。
08/03/07 01:56:07 /zU2Jm/L
これ商用で配布とかは可能なの?
どこに書いてあるかわかんないんだけど
819:名前は開発中のものです。
08/03/07 02:03:53 li5Lf13v
確か可能なはず
820:名前は開発中のものです。
08/03/07 02:58:15 r5pkyD7y
つURLリンク(www.yoyogames.com)
821:名前は開発中のものです。
08/03/07 21:49:20 /zU2Jm/L
>>819,820
サンクス
822:名前は開発中のものです。
08/03/10 16:38:14 qJ6+/ltX
>>819,820
セブンイレブン
823:名前は開発中のものです。
08/03/11 20:45:46 EJkJUT5l
親インスタンスの設定と当たり判定の設定がまとめを見てもわからない・・・
GM7だとやり方が変わってるのでしょうか?
もしそうなら誰か設定の仕方を教えてくれませんか?
824:名前は開発中のものです。
08/03/11 21:53:46 c68BSDCd
別に変わってないはずだけど
ParentとかBounding Boxが見つからないって話だったら
まず File >Advanced Mode にチェックつける
825:名前は開発中のものです。
08/03/11 22:02:17 EJkJUT5l
>>824
㌧
advanced modeにチェックを入れたら見れるようになりました
ありがとうございました
826:名前は開発中のものです。
08/03/16 11:21:30 7GR4thT4
インスタンスIDを使って、当たり判定の位置調節をしているのですが、
存在するIDを指定しているのに、時々そんな変数しらねぇよといわれてしまいます。
おそらく、instance_changeの時に何か起こっているのだと思うのですが・・
立ち状態のインスタンスのIDを保存して、攻撃やダメージの際に、
instance_changeを利用しています。
立ちインスタンス←ここのIDを保存している
└攻撃1インスタンス
└攻撃2インスタンス
└ダメージインスタンス
if(adjust){
if(player == 1 && global.cpu_1){
x = (global.com1).x + (global.com1).hspeed + posx;
y = (global.com1).y + (global.com1).vspeed + posy;
}else if(player == 2 && global.cpu_2){
x = (global.com2).x + (global.com2).hspeed + posx;
y = (global.com2).y + (global.com2).vspeed + posy;
}else if(player == 3 && global.cpu_3){
x = (global.com3).x + (global.com3).hspeed + posx;
y = (global.com3).y + (global.com3).vspeed + posy;
}else if(player == 4 && global.cpu_4){
x = (global.com4).x + (global.com4).hspeed + posx;
y = (global.com4).y + (global.com4).vspeed + posy;
}
}
827:名前は開発中のものです。
08/03/16 13:35:59 V0YG+k5o
インスタンスを変更すると、1ステップの間そのインスタンスは
「存在するけど存在しない」みたいな不安定な状態になるらしくて
「instance.variable」みたいにドット使って変数を参照するとエラーになる。
やっかいなのは、インスタンス自身は存在するので
instance_existsとかでチェックできないこと。
対策としては、with使ってその中で変数使えばエラーは出ない。
with (global.com1) {
other.x = x + hspeed + other.posx;
other.y = y + vspeed + other.posy;
}
みたいな感じで(withの中ではotherが元のselfになるのに注意)
インスタンスの変更は変数の継承がらみでもややこしい問題があるので、
できるだけ使わずにすませた方がいいよ。
この場合、オブジェクト一つだけでよくない? 当たり判定はmaskで変えられるよ。
828:名前は開発中のものです。
08/03/17 10:22:50 RBuRFwrN
>>827
なるほど・・わかりやすい説明ありがとうございます。
ダメージモーションの種類が4、攻撃の種類が40、その他死亡モーションや、
予備動作などがあって、一つのオブジェクトで作ると、
俺の頭がこんがらがってしまったので分けましたが、
実際のところは分けないほうが最終的にわかりやすいんだろうなぁ・・。
やっぱり自分の力量に応じて仕様というか、
ある程度妥協した方が結果的にいい場合もあるんでしょうね。
829:名前は開発中のものです。
08/03/17 13:07:23 0WhHqNl0
モーションってのがただ単にスプライトのことだったら、スプライトの入れ替えだけで済むし(sprite_indexの変更)、
全てのスプライトを1つにまとめて、subimageの値を決めることでも解決する。(image_indexの範囲指定)
スプライト以外だとしても、そのインスタンスの状態(ダメージ、攻撃中、移動中等)で場合分けをするといいだろうね。(step内でswitchを使って場合分け)
インスタンスを変えるということは、今あるインスタンスを削除して、新しくインスタンスを作るということ。
敵を攻撃したり、ダメージを受けたりする度に自分が生まれ変わるってのも変な話だよね?
インスタンスを変えていると、システム的なエラーだけじゃなく「エラーメッセージは出ないけど、自分の意図した通りにならない」というエラーも起こりやすい。
だから、場合分けをインスタンスの変更でするんじゃなくて、オブジェクトの中で場合分けをするように作っていく方がいいよ。
830:名前は開発中のものです。
08/03/17 20:51:48 zfMhFuyL
さっきレジストしたんですが、バックアップCDってのは別にいらないですよね?
831:名前は開発中のものです。
08/03/17 21:11:55 9xiWBLkG
特定のボタンを押したり画面内のボタンをクリックしたらいったんその画面の動きを止めて
画面上に別のメニュー画面などを表示させたいのですがどうすればいいでしょうか。
832:名前は開発中のものです。
08/03/17 22:38:19 lI4Ks6j6
>>831
お手軽なのはshow_menu。当然メニューとしてはしょぼいけど。
キー操作だけでよければ、keyboard_waitでループ回しつつ
キー処理をしてメニューをがしがし描き変えるという方法がある。
サンプルで付いてくるasteroidsが参考になるかな。
ただ、このやり方はメニューの構成が複雑になると厳しい。
一般的なのはポーズする時にグローバル変数を設定しておいて、
他のオブジェクトはその変数が立っている間動きを止めるというもの。
ただ、止めないといけないものは意外とたくさんあるので(gravityだとか
alarmだとかアニメーションだとか)、ゲームが複雑になるにつれて
ちゃんとメンテするのが難しくなってくる。正直労力に見合わない。
本格的にやるなら、background_create_from_screenで
今の画面を背景画像に設定してから
instance_deactivate_allでインスタンスを全部非アクティブにしてしまう。
それからメニュー用のオブジェクトを配置する。
これならマウス使ったりメニューオブジェクトを動かしたりするのも自由だし、
メニュー抜ける時の後始末さえしっかりやれば一番実装しやすいと思う。
833:名前は開発中のものです。
08/03/23 14:48:57 CEb9FX4l
タイトル画面のメニューとして使うスプライトを外部から読み取ろうとしているのですが、
(Start/Option/Endの3項目があるとして)
1) あらかじめ3つの項目を横一列に並べた画像「title.gif」を作っておく。
ゲーム実行時にtitle.gifから、3つのサブイメージを持ったスプライト「sprite_title」を作る。
3つのオブジェクト「obj_start」「obj_option」「obj_end」のスプライトを全て「sprite_title」に設定する。
image_singleを、obj_startは0、obj_optionは1、obj_endは2に設定する。
(つまり、3つのサブイメージを持った1つのスプライトを使い、表示させるものを変える)
2) あらかじめ3つの画像「start.gif」「option.gif」「end.gif」を作っておく。
ゲーム実行時にそれぞれの画像をロードして、「sprite_start」「sprite_option」「sprite_end」の3つのスプライトを作る。
オブジェクト「obj_start」に「sprite_start」を割り当てる。他二つも同様。
(このとき、1つのオブジェクトに対してサブイメージは1つだけ)
1と2でメモリ浪費等で違いはありますか?
できれば1の方法を使いたいのですが、そうするとそれぞれのオブジェクトが、
表示されないサブイメージを2つずつ持っていることになり、これは無駄になるのかなと。
ならないのであれば、不要になったときに消すスプライトが一つで済むのですが。
詳しい方、教えてください。
834:名前は開発中のものです。
08/03/23 21:06:26 vPqoB7Ec
試してないからわからないけど、多分同一スプライトを複数のオブジェクトから参照しても、
メモリ上にスプライトを複製するようなことをしない、と思う。。。
1の方法でいいんではないかな。
835:名前は開発中のものです。
08/03/23 21:32:39 PWwLtvC1
その「sprite_title」がグローバル変数で、ロード(sprite_add)を1回しかしないなら
スプライト1つ分のメモリしか使わない。ローカル変数でそれぞれのオブジェクトが
個別にsprite_addするなら、当然スプライト3つ分のメモリを使う。
なので(1)と後者の方法の組み合わせだとメモリを無駄に使うことになる。
他の組み合わせだと使用量は同じかな。
でも、メモリの節約だけが目的なら、単にスプライトのプリロードをオフにする
(GM5の場合は遅延ロードをオンにする)で十分だと思う。
これだと必要な時に自動的にロードして、ルームの終了時に自動的に解放もしてくれるよ。
836:名前は開発中のものです。
08/03/24 02:31:39 jcEogdo3
>>834,>>835
有難うございました。1の方法でロードすることにします。
837:名前は開発中のものです。
08/03/24 17:37:42 M/9alYxD
複数の地面になるオブジェクトを並べてジャンプ後に着地するように設定したんですが、
横一列に並べているのに着地位置が縦1マス分ほどあいまいになってしまいます。
bounding boxも隙間なく設定しているんですがなぜでしょうか?
838:名前は開発中のものです。
08/03/24 17:55:40 jv5GLLmZ
言語ファイル対応させろよ・・・
839:名前は開発中のものです。
08/03/24 23:02:33 GFQTJ2FQ
>>838
>>746
840:名前は開発中のものです。
08/03/25 01:38:15 /7w1wYJ6
>>837
地面にぴったり着地しなくて、宙に浮いた状態になるってこと?
Collisionイベントに「move to contact」のアクションは入れてる?
841:名前は開発中のものです。
08/03/25 02:43:56 7R5Ni7yo
>>837
>>840の解説。
衝突が起きたとき、相手がSolidだと自分は衝突前の位置に戻される。
例えば床との距離が5あって、自キャラが3の速度で落下していたとき、
次のステップで床との距離が2になって、さらに次のステップでは床にめり込む。
このめり込んだ瞬間に、床にSolid判定がついていたのなら、
衝突が起きる一つ前のステップ、つまり床との距離が2の時の位置に一旦戻される。
たまに浮いてしまうのはこのため。
Collisionイベントに「move to contact」のアクションを入れてやることで、
「(めり込んだ後、一旦1ステップ前の位置に戻してから)床に接する位置に移動させる」
という過程で、床にぴったり着地させることができる。
842:名前は開発中のものです。
08/03/25 04:38:59 6z3i9o/6
質問に答えていただきありがとうございます
843:名前は開発中のものです。
08/03/26 21:43:48 paW4cEkf
すいません、質問で今アクションゲームを作っているのですが、
スマブラのAボタンのコンボみたいなものを作りたいと思っています。
どうすればできるでしょうか。GMLじゃないとできないとかなんでしょうか。
もしGMLじゃなくてもできるのであればご教授お願いします。
下手糞な文章ですいません。
844:名前は開発中のものです。
08/03/26 21:45:56 paW4cEkf
すいませんVer.5.3Aです。
845:名前は開発中のものです。
08/03/26 21:46:16 paW4cEkf
すいませんVer.5.3Aです。
846:名前は開発中のものです。
08/03/26 22:08:47 tIIk7RtU
スマブラのAボタンのコンボみたいというのが、漠然としすぎてよく分からない
もっと具体的に
847:名前は開発中のものです。
08/03/26 22:17:44 paW4cEkf
1個目の攻撃のモーションが出た後につづけて攻撃ボタンを押すと、
2個目の攻撃モーションがつづけて出るみたいのにしたいんです。
パンチ→パンチ→キックみたいな。
848:名前は開発中のものです。
08/03/27 02:00:03 CI1Rl28I
>>847
アクションあまり詳しくないからこれでいいかわかんないけど
アラームイベント2個組み合わせてコンボ入力受付期間を作ってみたらどう?
まずオブジェクトにコンボアクション発動許可用変数を用意し”0”を初期値に。
攻撃ボタン押したら1回目の攻撃を行わすとともに1つ目のアラームを起動させる。
1つ目のアラームがタイムアップしアラーム内アクションにコンボアクション発動許可用変数を”1”にして2個目のアラームを起動させる。
2個目のアラームがタイムアップしたらコンボアクション発動許可用変数を”0”に戻す。
攻撃ボタンはコンボアクション発動許可用変数が”0”の時と”1”の時で攻撃が変わるようにIf a variable has a valueで分岐させる。
とかそんな感じだと思うけど・・・まずはアニメーションスプライト用意して通常攻撃モーションとコンボモーションを作成してみては?
そこらへんはもうできてるかもしんないけど・・・
849:名前は開発中のものです。
08/03/27 08:42:25 bXR6vAZf
ご丁寧な返答ありがとうございます。
またわからないことがあったら聞きに着ます。
850:名前は開発中のものです。
08/03/27 09:37:30 bXR6vAZf
「攻撃ボタン押したら1回目の攻撃を行わすとともに1つ目のアラームを起動させる。」
の部分でアラームイベント内にどんなアクションを入れたらいいんでしょうか。
ご教授お願いします。
851:名前は開発中のものです。
08/03/27 13:17:57 bXR6vAZf
解決することができました。ありがとうございます。
852:名前は開発中のものです。
08/03/27 20:38:31 bXR6vAZf
質問なのですがアニメーションをループさせず一週でとめるにはどうすればよいのですか?
853:名前は開発中のものです。
08/03/27 22:07:49 fgaEWE81
>>852
アニメーションエンドイベントで
image_index を最後の番号(絵が18枚ならindexは0~17なので、17にする)にして、
image_speed を 0 にする、とか。
854:名前は開発中のものです。
08/03/28 11:24:35 MJYJEqfl
背景をタイル張りにせずにビューについてこさせるためには
どうすればいいのでしょうか?
855:名前は開発中のものです。
08/03/28 11:33:42 uVxOA1kY
一枚絵の背景画像を view についてこさせたいってことなら、
背景画像の表示位置は、background_x[0..9] と background_y[0..9] の変数で管理されてるんで、
0番目の背景を0番目のview左上角位置に調整したければ、
ステップイベントで以下のコードを記述すればよい。と思う。
background_x[0] = view_xview[0]
background_y[0] = view_yview[0]
背景画像がタイル化指定していたら、無効かもしれない。
856:名前は開発中のものです。
08/03/30 18:19:37 NXbnTPzd
特定のインスタンスを常に手前側に表示させるって方法がありましたっけ?
あったら教えてくださると嬉しいです。
857:名前は開発中のものです。
08/03/30 18:20:34 NXbnTPzd
>>856 文にミスがあったので修正
×方法が
○方法って
858:名前は開発中のものです。
08/03/30 18:40:24 y58KxNze
depthを小さくさせる、かな。
depthが小さいほど手前、大きいほど奥に表示される。
例えば-10、0、10の3つがあったら-10が一番手前に表示される。
手前に表示したければ、その特定のインスタンスのdepthを他より小さくすればいい。
デフォでdepthは0になってるから、特に何もしてない限りdepthを-1にすれば済むはず。
859:名前は開発中のものです。
08/03/30 20:25:27 NXbnTPzd
>>858
ありがとうございます。
解決しました
860:名前は開発中のものです。
08/03/31 00:26:35 3gZNdKrL
>>855
ありがとうございます。コードを組み込んだらちゃんと着いてきました。
でも何故かとまるときや着地するときに背景がズレるのです。
解決方法があれば教えていただけるとうれしいです。
URLリンク(gamdev.org)
861:名前は開発中のものです。
08/03/31 01:54:01 VGQZQIFz
>>860
落として見たわけじゃないけど、viewの座標は
「End stepイベントの後」かつ「Drawイベントの前」に更新されるので
StepイベントやEnd stepイベントで他の座標をviewに合わせても
描画の時点でずれてしまうという問題がある。たぶんそれじゃないかな。
一般的な解決法は「Drawイベントでviewに合わせて描画する」なんだけど、
背景の描画はDrawイベントより前に実行されるのでこのケースでは厳しい。
この場合、ルームの背景自体はなし<no background>にして、
かわりにうんとdepthの大きいオブジェクトを一つ用意し、
そいつに背景を描画させるのがいいと思う。
Drawイベントの中で
draw_background(background0, view_xview[0], view_yview[0]);
みたいな感じで。
862:名前は開発中のものです。
08/03/31 06:36:23 /Z2PGPfr
アクションゲームで被ダメージのイベントを作りたいのですが、
敵の様々な攻撃を「敵の攻撃」と、一つにまとめられないでしょうか。
「このオブジェクトに衝突したらダメージ、このオブジェクトにも衝突したらダメージ」と
オブジェクトの数だけ記述しているような状態を何とかしたいのですが。
863:名前は開発中のものです。
08/03/31 13:44:36 3gZNdKrL
>>861
解決しました。
ありがとうございます。
864:名前は開発中のものです。
08/03/31 22:40:41 VGQZQIFz
>>862
そのためのparent
適当なオブジェクトを一つ作ってobj_damage_parentとでも名付ける
ダメージ元のオブジェクト全部でそいつをparentに指定する
(Advanced modeをオンにしないとparentの設定は出てこないので注意)
後はobj_damage_parentとの衝突イベントだけ作ればOK
865:名前は開発中のものです。
08/03/31 23:28:59 /Z2PGPfr
>>864
ありがとうございます
866:名前は開発中のものです。
08/04/01 15:45:29 jcfVMQvT
>>863
>>860のファイルちらっと見たけど1つだけ
オブジェクトとかスプライトとかサウンドのリソース名が同じものがいくつかあるけど
別の名前にしておいた方がいいよ
867:名前は開発中のものです。
08/04/01 16:06:42 jcfVMQvT
あっとそれから名前に”-”や”?”をつかうのもダメだったと思う
メニューの「Scripts」→「Check Resource Names」で
チェックしてみ
<No name conflicts were found>と出るようになったらok
868:名前は開発中のものです。
08/04/03 12:01:14 LCg7Ks7Z
ライフバーの機能を使ってみようと思い、マウスの位置に合わせて描画されるように作ったつもりなのですが全く描画されません。
どこら辺が間違っているのでしょうか?
Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Step Event:
set the health to 50
draw the health bar with size (mouse_x,mouse_y,mouse_x+200,mouse_y+30) with back color white and bar color blue
869:名前は開発中のものです。
08/04/03 12:13:58 RldfVeQ4
drawアクションはdrawイベント内で実行しよう
870:名前は開発中のものです。
08/04/03 12:26:59 LCg7Ks7Z
単純なことであるのに質問に答えていただき誠に感謝します。
871:名前は開発中のものです。
08/04/03 15:31:34 hpoNHotE
livesのイメージって縦に出来ない?
872:名前は開発中のものです。
08/04/03 17:47:55 x/yJQOmc
>>871
draw Livesアクションは横方向でしかならべられないのね。GMLでかいたらこんな感じかな?
drawイベントに「Execute a piece of code」で
for(i = 0; i < lives; i +=1)
{
draw_sprite(ライフ表示用スプライト名,-1,先頭のスプライトイメージのX座標,
先頭のスプライトイメージのY座標+sprite_get_height(ライフ表示用スプライト名) *i);
}
873:名前は開発中のものです。
08/04/03 17:55:35 x/yJQOmc
Draw Live Images アクションだった^
874:名前は開発中のものです。
08/04/04 05:13:29 xKOenXkz
おー、縦にできた。ありがとう
875:名前は開発中のものです。
08/04/04 05:21:13 xKOenXkz
ってこれ減らした時に下から減っていくのは仕様なのか
876:名前は開発中のものです。
08/04/04 05:32:53 ozKEK2lV
+を-にしたりすれば上下逆もできるんじゃ?
877:872
08/04/04 06:59:11 GCwfYrIO
>>875氏
仕様というかそういうんじゃなくて
draw_sprite()は描画イベントでスプライトを表示させる命令
sprite_get_height()は指定したスプライトの高さを調べる命令
そんでdraw_sprite()命令をfor文を使って単にライフの数だけ繰り返してる
for()の中で”i”は初期値が”0”で1回処理されるごとに1づつ増えていくからsprite_get_height()*iとすることで
スプライトの高さだけずれて描画されていってる
>>876氏のいう様に”sprite_get_height(ライフ表示用スプライト名) *i”の前の符号を-にしたら下から上になる
878:名前は開発中のものです。
08/04/04 08:31:17 xKOenXkz
なるへそ。
ちょっと考えればわかることだね、お恥ずかしい。
勉強になります、ありがとう
879:名前は開発中のものです。
08/04/04 11:47:17 UN21xGR5
クリックした時にそのクリックした位置が
そのオブジェクトより上だったならそのオブジェクトの画像を後ろ向き、下なら前向き、左なら左向き、右なら右向き・・・ってな感じで変える方法は無いでしょうか?
右斜め下とか8方に作りたいのです。
それとクリックした位置にオブジェクトを移動させる(一瞬でじゃなくそこまでの道程を通って)のはどうすれば良いのでしょうか?
初歩的な質問ですみませんがよろしくお願いします。
880:名前は開発中のものです。
08/04/04 23:37:08 atXFd6s2
URLリンク(rapidshare.com)
881:名前は開発中のものです。
08/04/04 23:44:49 atXFd6s2
ゴメン、ミスったぜ
URLリンク(www.uploda.org)
pass:GM
882:名前は開発中のものです。
08/04/05 01:54:06 28WyvbPP
>>881
すみませんがGM6なので開くことができません・・・。
それともGM6で開く方法もあるのでしょうか?
883:名前は開発中のものです。
08/04/05 04:41:45 /7lMTMqT
Object1
Step Event:
set variable image_angle to direction
Object2(追尾させたいスプライト)
Step Event:
if left mouse button is pressed
for all honoo: perform a step towards position (mouse_x,mouse_y) with speed 10 stop at solid only
GM6だと開けないのか~
884:名前は開発中のものです。
08/04/05 04:46:32 mh+kpRIe
俺普段はGM5使ってるけど
中身見る用にGM7も入れてる
885:名前は開発中のものです。
08/04/05 05:54:37 /7lMTMqT
書き間違えました。
上から7行目のhonooってのはObject2のことです。
886:名前は開発中のものです。
08/04/05 08:08:06 Q8dvYXzo
ここの住民的にニコニコ動画(VS)ってどうなんだ?
外部データからキャラクターの追加とか
結構システム設計まわりをがんばってるみたいだが。
887:名前は開発中のものです。
08/04/05 13:27:36 /7lMTMqT
なかなか良いと思ってるよ。
キャラを後から追加できるなんて良心的だよね。
俺ならキャラデータを丸ごとexeにブチ込んでアップデートのたびに
大容量のデータをいちいちダウンロードさせてる所だよ。
開発が長引いたのはうp主が忙しかったからかな?
888:名前は開発中のものです。
08/04/05 14:18:21 28WyvbPP
後から外部からデータ追加とかどうやってるんだろ
889:名前は開発中のものです。
08/04/05 14:52:56 /7lMTMqT
Replace a sprite from a fileを使えばおk
890:名前は開発中のものです。
08/04/05 21:57:34 /7lMTMqT
自らを生成したオブジェクトを指定する関数っていうのはありますか?
891:名前は開発中のものです。
08/04/06 00:30:38 jpfm9sAG
>>890
ないので自分で誰が作ったか覚えておかないといけない。
・instance_createは生成したインスタンスのIDを返す
・自分自身のインスタンスIDはidでとれる
ので
aaa = instance_create(x, y, object0);
aaa.createor = id;
としてやると、object0の中からはcreatorで自分を作ったインスタンスを参照できる。
892:名前は開発中のものです。
08/04/06 14:46:53 +Z1B7XWC
>>891
ありがとうございます
893:名前は開発中のものです。
08/04/06 15:05:43 EU0AU+S4
オブジェクトBの位置までオブジェクトAが移動して、オブジェクトBの位置についたら移動を停止する。というのはどうすればよろしいのでしょうか?
894:名前は開発中のものです。
08/04/06 17:03:33 +Z1B7XWC
>>893
step towardsのx座標に「ObjectB.x」y座標にも同じく「ObjectB.y」って入れれば
ObjectBが目標の座標になるよ。
895:名前は開発中のものです。
08/04/06 17:45:37 EU0AU+S4
>>894
おお・・・こんな簡単に・・・ありがとうございます><
896:名前は開発中のものです。
08/04/06 18:30:55 EU0AU+S4
すみませんがもう1つお願いします。
現在このようなゲームを作っているのですが↓
URLリンク(gamdev.org)
クリックした時、オブジェクト0が進行方向(オブジェクト1のある方向)と
同じ向きの矢印スプライトに変化する様にするにはどうすれば良いのでしょうか?
解り難い説明ですみませんが、ご存知の方よろしくお願いします。
897:名前は開発中のものです。
08/04/07 00:07:19 ip9v6GLB
【速報】らき☆すた二期決定でアニオタ歓喜wwwwwwwwww
URLリンク(jbbs.livedoor.jp)
898:名前は開発中のものです。
08/04/07 05:30:29 wG6ko/jv
>>896
zip落せなかった;;
image_angleの値をdirectionにすれば楽にできるけどレジストバージョンしか出来ないかもしれないから、
レジストじゃなかったらdirectionの角度ある程度の範囲になったらになったらChange the spriteを使う方法があるよ
大雑把な説明だけどzipがどんなのか確認できたらもっとわかりやすく書くかも。
899:名前は開発中のものです。
08/04/07 09:53:52 PrCqy7fg
>>898
私のPCではちゃんと落とせるのですが・・・
再うpしてみましたのでこちらはどうでしょうか?
URLリンク(gamdev.org)
900:名前は開発中のものです。
08/04/07 13:17:17 wG6ko/jv
私のはGM7なのであえて記述させてもらいます
Information about object: object0
Sprite: sprite2
Step Event:
perform a step towards position (object1.x,object1.y) with speed 5 stop at solid only
set variable image_angle to direction
Information about object: object1
Sprite: <no sprite>
Mouse Event for Glob Left Button:
move to position (mouse_x,mouse_y)
なお、これはレジスト用です、レジストでない場合はimage angleが使えないので
Ifステートメントとchange spriteを組み合わせるしかないでしょう。
私はまだ日が浅く、その場合の方法は考え付かなかったので非公式サイトあたりで聞いてみてください。
901:名前は開発中のものです。
08/04/07 23:37:03 5Vpyn9U6
某東のほうのSTGの魔女っ娘みたいな極太レーザーを表現したいんですけども
どうすれば極力ゲームが軽く仕上がるでしょうか?
902:名前は開発中のものです。
08/04/08 00:43:47 1aWF0Oei
>>901いまどきのマシンスペックなら少々無茶やっても速度落ちないと思うけど?
ただimage_xscale,image_xscaleでスプライトを拡大すると処理負荷がかかるっていうのはあるのかな?
以下gamemaker helpの「ゲームの仕上げ」→「ゲームの速度について」より引用
>ほとんどのグラフィックカードは、効果的に画像を拡大することが出来ますが、その処理のために重くなります。
だそうです
自分は400×480のルームに画面半分近いぐらいのボスを作ってみたけど
PⅢマシンでもルームスピードが落ちることはそうなかったですよ?
んで純粋にレーザーの作り方はというと
普通に弾撃たす処理と対して変わらないかと思います。
要はレーザー発射源オブジェクトのインスタンスよりレーザー用のインスタンスを切れ目なく生成して
その時一緒にdirection,speedの数値をレーザー用のインスタンスに与えてあげたらいい。
切れ目なく生成するというのはアラームイベントを使えばよくて、この時「number of steps」の数値が大きすぎると
レーザー1コマ1コマの間が長くなるから隙間が生じる。
答えになってるかどうか心配ですが。一応ここまででレス切っておきます。
903:名前は開発中のものです。
08/04/08 11:32:50 PGw82Ekz
GMに興味あるんだけど、ここ見てると書式結構独特ぽいな…
やってる人はけっこうサクっと順応できたのかな。
904:名前は開発中のものです。
08/04/08 21:09:24 lWzhg9Ri
>>903
ここ数レスのはアイコンの内容を言葉で説明したものであって、
実際にああいうコードを打つわけじゃないですよ。
Game Makerではオブジェクトの動作を定義するのに
「アクション」というアイコンをポチポチ並べていく方法と、
「GML」という言語で直接コードを書く方法があって
習熟度に応じててきとーに混ぜて使えます。
GMLの文法はCとほぼ同じ(一部Pascal要素あり)なので、
ある程度プログラミングの経験があればすんなり覚えられるはず。
たとえば>>900は2箇所のイベントにアクションを3つ置いた様子を
表しているけれど、同じ内容をGMLで書くとこうなります。
// object0のStepイベント
mp_linear_step(object1.x, object1.y, 5, false);
image_angle = direction;
// object1のマウスボタンイベント
x = mouse_x; y = mouse_y;
905:名前は開発中のものです。
08/04/08 23:29:01 C/r/gPzk
>>902
後者で試してみようと思います
ありがとうございました!
906:900
08/04/09 03:31:08 R1oJ6a1A
>>904
ああ、そうなのかー…なるほどなあ…
わざわざ丁寧にありがとうございます。
以前豆乳システムとかもいぢってたんで、
C言語に似てるなら結構早めに覚えられそうですね。
907:名前は開発中のものです。
08/04/09 06:41:45 n+SEEGKi
自分はhspでゲームが簡単に作れるって聞いたもんだから実際に触ってみたらサッパリ理解できなかった。
それに比べてGMなら2週間くらいで大体使えるようになった。
908:名前は開発中のものです。
08/04/11 18:09:33 AT/nfPM9
>>900
遅くなりましたがありがとうございます。
レジスト、というのがどのような物なのか解りませんが・・・。
それとスレ違いかも知れませんが非公式のフォーラムに書き込むことが出来ないのですが私だけでしょうか?
909:名前は開発中のものです。
08/04/11 20:34:53 LqedxyKD
非公式サイトはユーザー登録してからフォーラムで「新規に投稿」押せば書き込めるよ。
あとレジストは料金を支払って制限解除したバージョンのこと。
良く分からない単語使ってゴメンネ
910:名前は開発中のものです。
08/04/11 20:37:53 EEx5djbh
>>908
レジストとは、お金を払ってプロダクトキーを貰い、使用制限を解除することです。
911:名前は開発中のものです。
08/04/11 20:38:20 EEx5djbh
おおう、更新すれば良かったorz
912:名前は開発中のものです。
08/04/12 11:01:55 eNZFgCaH
>>909,910
ありがとうございます。
なるほど、有料登録ですね
913:名前は開発中のものです。
08/04/18 10:19:47 3dx+PVyf
ちょっと参考までに、日本語圏でのGM作品を見てみたいんだが、
有名所で、GM作品を公開してる人っているかい?
914:名前は開発中のものです。
08/04/18 20:35:49 xHO8JEqh
ニコニコのミックマンXやニコニコアクションゲームとかなら知ってるけど。
ニコニコでgamemakerを検索するとちょっぴり出てくる。
915:名前は開発中のものです。
08/04/27 05:53:10 2l2AKY8C
これダウンロードできなくね?
916:名前は開発中のものです。
08/04/27 11:06:31 CLNLyEnS
英語だらけだから難しいよね
俺もダウンロードするのに一日かかった
917:名前は開発中のものです。
08/04/29 09:44:12 2d8FpwgV
登録しねーとDLできないのか?
918:名前は開発中のものです。
08/04/29 11:59:36 YwZZ6j+f
基本的に登録してからダウンロードしたほうがいい。
けど、
URLリンク(www.yoyogames.com)
からDL出来ると思う。
919:名前は開発中のものです。
08/04/30 21:35:13 wqvUGn48
6.1で3Dポリゴンにテクスチャを張りたいのですが、色々試しても黒く表示されるだけでどうにも……
どうコードを組めばうまく表示されるか誰かアドバイスくれませんか?
920:名前は開発中のものです。
08/05/01 00:53:19 TumL990E
その「色々試した」の中身が重要なわけだけども。
まあ、仮にテクスチャはちゃんと取れているものとして。
描画するのにcolorが付かない方のd3d_vertex_textureを使ってるとすると
その場合テクスチャは現在設定している色でブレンドされる。
draw_set_colorしてないと初期値は黒だから、結果も真っ黒になるよ。
もしそうだとしたら、先頭でdraw_set_color(c_white)してみて。
921:名前は開発中のものです。
08/05/01 05:57:14 boSZuiu9
>>920
ありがとうございます!
まさしくそれでした(^^;
こんな簡単なミスだったとは……
922:名前は開発中のものです。
08/05/01 22:44:02 QlMWKAXW
すごい漠然とした質問なんですが
画像を1、2、3って表示させるときに
1の画像が前面、3の画像が背景側に表示させる方法ってあります?
GML非公式サイトでdraw関連のコードがあまり説明されてなかったので。。。
923:名前は開発中のものです。
08/05/01 23:27:03 lT+h3RUS
簡単なのは 画像1 画像2 画像3 をスプライトに持つオブジェクトを作って、 depth で指定する方法。
depth の数値が大きくなると上に重なる。はず。
draw イベントで処理したいなら、基本的に画面上に上書きされるので、下になるほうを先に描画すればいい。
924:名前は開発中のものです。
08/05/02 02:15:50 IG1MecUh
305をそのまま使って、新しいオブジェクトを作って設置し
、すり抜けてみたんですが、solidにチェックがついてない
のに、接触した状態で立ち止まると、壁にはまったときと
同じ動作になってしまいました・・・
座標チェック時に、対象インスタンスIDがSolid属性の場合のみ
壁判定という動作にしてみようかと、以下のようにやってみんですが
うまく動かないようです・・・
nulld = !place_empty(x-1,y)
if nulld.solid == 0
{
壁回避コード
}
うーん。。。コリジョン難しい
925:名前は開発中のものです。
08/05/02 02:35:04 20oP59U2
place_emptyが返すのはIDじゃなくてtrue/falseだから……
相手のIDが欲しければinstance_place使う。
solidの判定も逆のような気がするけど、それ以前にそもそも
place_free使えばsolidのオブジェクトだけチェックしてくれるよ。
926:名前は開発中のものです。
08/05/02 07:25:07 IG1MecUh
>>925
なるほど。。。そうだったのか。
ありがとうございます。
うー、日本語マニュアルがほしぃ。。。
927:名前は開発中のものです。
08/05/03 12:42:03 CaNFTODT
逆に考えるんだ、「英語の勉強になる」。そう考えるんだ。 トェェェェイ
ところで、これで某有名同人弾幕シューティングの二次創作tkっているが
弾幕ww、弾幕が再現できねぇwwww
928:名前は開発中のものです。
08/05/03 14:24:24 9QsVrF2b
仲間発見
929:名前は開発中のものです。
08/05/03 15:59:55 3a9tSZMK
>>927
俺は某同人弾幕STG風オリジナルSTG(つまりパクり)作ってるが、まずはn-way弾を発射するスクリプトを書くんだ!
930:名前は開発中のものです。
08/05/03 17:55:29 TpBQZjg2
ロードの際「セーブデータのフォルダがある」「ゲームのセーブデータがある」時だけロードボタンを押せるようにしたいのですが
そういったデータの有無を内部で確認させる方法はありますか?
931:名前は開発中のものです。
08/05/03 18:07:56 9QsVrF2b
exist系のを使えばできるはず。directoryとかfileとか。
マニュアルで検索かけてみ。
932:名前は開発中のものです。
08/05/03 21:32:29 O2xyPtem
>>927-929
こんなに俺がいたとは
今ではn-wayを手動でやってたときが懐かしいです
933:名前は開発中のものです。
08/05/03 21:53:01 XU6M82BJ
板違いなんでしょうが、
シューティングとかで弾を撃つアクションはどれになりますか?
誰か教えてくださいな~
934:名前は開発中のものです。
08/05/04 06:21:13 2fBGUOBZ
「シューティングで弾を撃つアクション」とか、「RPGで敵を攻撃するときのダメージ設定」とか、
そういった類のアクションはなく、自分なりにデザインして、自分で一から作るのがGM。
簡単に言えば、弾を撃つってことは、弾というオブジェクトを作り、それをある速度で飛ばせばいい。
935:名前は開発中のものです。
08/05/04 06:27:00 2fBGUOBZ
……でも、もし弾幕STG作るんだったら、弾幕風で事足りる気がする。連投失礼。
936:名前は開発中のものです。
08/05/04 08:24:53 lNeW/IjQ
>>934
なるほど。。オブジェクトを作って飛ばす訳ですか。
大体解りました~ありです。
937:名前は開発中のものです。
08/05/04 20:03:25 lNeW/IjQ
今934さんに教わった後頑張って色々やったのですが、
何点か分からない点や仕方のわからない点が出てきました。。
もし良かったら教えてください。
・弾の発射に間隔を付ける方法
・一部状況下(俺の言いたいのはジャンプ中)での発砲不可
・一定の数の弾を発射後何秒間か使用不可(要するにリロード)
・↑の間モーションが入るようにする方法
教えてください~
938:名前は開発中のものです。
08/05/04 20:26:08 LG4ZPs/B
>>937は変数について理解してるか?
上三つは、変数が必要になる。
・弾の発射に間隔を付ける方法 → 発射可能を表す変数
・一部状況下(俺の言いたいのはジャンプ中)での発砲不可 → ジャンプ中かどうかを表す変数
・一定の数の弾を発射後何秒間か使用不可(要するにリロード) → 残弾数を表す変数
そして条件分岐だ。上から順に、
・弾を撃つ際に、発射可能変数を条件分岐に使い、可能の値だったら(例えば1)弾を撃てるようにする。そうでなければ何もしない。
で、弾を撃ったら 変数を不可能を表す値(例えば0)にして、タイマーイベントを発動。(アクションのタイマーを利用する)
タイマーイベント中で変数を可能状態(1)にする。
・着地状態からジャンプに移行したときに、ジャンプ中を表す変数の値をジャンプ中の値(例えば1)にする。
ジャンプの状態から着地状態になったときに、変数の値を着地状態(例えば0)にする。この変数を使った条件分岐を、撃つ時の条件に加えよう。
・弾を撃つごとに残弾数を減らす。弾を撃つときに条件分岐を付け加え、残弾数が0ならリロードモーション(自作するべし)を起こすようにする。
リロードのモーションは、モーション専用のオブジェクトを作って、オブジェクト変更アクションを利用するのがいいかもしれない。
そのときは、モーション専用オブジェクトで、モーションが終わったら元のオブジェクトに戻すことを忘れずに。
アニメーションエンドイベントをうまく利用すると楽かもしれない。用語とかでわからないことは、>>1の非公式サイトで調べてみ。
長文・乱文失礼。
939:名前は開発中のものです。
08/05/04 20:34:11 lNeW/IjQ
>>938
なるほど
それを行っている事を変数で表して、可能不可能をその変数の状態で判断させるわけですか
変数はあまり得意ではありませんが、色々やってみます。
ありがとうございました。
あ、後ここでこうやって質問して良い物なんですか?
板違いじゃないかとずっと気がかりでして。。
940:名前は開発中のものです。
08/05/04 20:52:37 LG4ZPs/B
>>939
まあ、過疎ってるし個人的にはいいんじゃないのかなとは思うけど。
質問以外の話題がほとんど無いし。。
教えてクレクレ君だらけになったらなったで、つらいんだけどねw
941:名前は開発中のものです。
08/05/04 20:57:40 lNeW/IjQ
やっていく内にわからなくなってきました。。
発射可能を表す変数 これはなんと表すことになるんですか?
例として教えてください
942:名前は開発中のものです。
08/05/04 21:16:10 smFSYJ2D
n = 3
これを発射回数として
一回打つたびに-1してやって
0の時には打てなくすればいいのかな・・・
俺も初心者だから参考にならないかも;
943:名前は開発中のものです。
08/05/04 21:21:43 lNeW/IjQ
>>942
返答ありがとうございます。
そういうのの総合的な並べ方がわからないんですね~>>941の文が分かりづらくてすみません。。
944:名前は開発中のものです。
08/05/04 21:29:00 smFSYJ2D
{
n = (n-1)
if n > 0
{
instance_create(x,y,bullet)
}
}
こんな感じでしょうか・・・
もっといい方法があると思いますが自分にはわかりません;
945:名前は開発中のものです。
08/05/04 21:30:58 lNeW/IjQ
>>944
ありがとうございました。
早速いじってきます~
946:名前は開発中のものです。
08/05/04 22:02:44 LG4ZPs/B
クリエイトイベントで
isshootable = 1; //弾が撃てるか
isjump = 0 ; // ジャンプしてるかどうか
bulletNum = 3; //残弾数
[弾を撃つイベント]
{
if (isshootable==1 && isJump == 0) {
if (bulletNum > 0) {
instance_create(x,y,bullet);
bulletNum -= 1;
} else {
}
}
947:名前は開発中のものです。
08/05/04 22:05:20 LG4ZPs/B
ゴメンミスッタ
クリエイトイベントで
isshootable = 1; //弾が撃てるか
isjump = 0 ; // ジャンプしてるかどうか
bulletNum = 3; //残弾数
[弾を撃つイベント]
{
if (isshootable==1 && isJump == 0) {
if (bulletNum > 0) {
instance_create(x,y,bullet);
bulletNum -= 1;
} else {
// リロード 弾を撃つボタンでリロードする場合にはここに記述
// 他のタイミングでリロードしたいなら、この部分は要らない。
{リロードするアクション}
bulletNum = 3;
}
}
こんな感じで。
948:名前は開発中のものです。
08/05/04 22:16:01 lNeW/IjQ
>>947
なるほど
そういう並べるのですか
また困ったらよろしくお願いします。
ありがとうございました~
949:名前は開発中のものです。
08/05/04 22:21:00 LG4ZPs/B
あ、あと撃ったときにタイマーイベント発生させるの忘れてたorz
bulletNum -= 1;
の下に、
alarm[0] = 30; // 30ステップ後にアラーム0イベントが発生。
としてくらさい。
インデントはかきこ時の見た目重視で全角スペース使ってるので、コピペだと動かないので注意。
950:名前は開発中のものです。
08/05/04 22:33:54 lNeW/IjQ
>>949
了解です~
ありがとうございます。
951:名前は開発中のものです。
08/05/04 23:18:28 KZv3H4cz
いつもお世話になっております。
教えてほしいのですが、>>853がうまくいきません。
image_speed = 0にしてGifのアニメを一周で止める動作をさせたいと考えています。
Stepイベントにて以下のコードを動かしてみたところ、アニメがループしてしまいました。
//5枚目でストップ。
if image_index == 4 {image_speed = 0}
ご教授いただきたくお願いします。
952:名前は開発中のものです。
08/05/04 23:28:07 KZv3H4cz
951です。
書き込みをした直後、試行錯誤を続けたところ
原因が分かりました。
gifをゆっくり動かしたかったことから、以下のコードを入れていました。
image_speed = 0.2
これを以下の値に直したところ、「5枚目でストップ」が動作することを確認しました。
image_speed = 0.25
うーん、ただここでひとつ疑問が・・・
なんで「0.2」では動作しなかったのか・・・うーん
板汚し、すいませんでした orz
953:名前は開発中のものです。
08/05/05 00:40:19 XEs+C953
>>952
小数を扱う場合、パソコン内では10進数ではなく2進数なので、
10進数ではキリのよい数値のように思えても、
2進数では無限循環小数(割り切れない割り算で、小数点以下を延々繰り返してしまう数)になってしまう数値がある。
もちろんパソコン内のメモリは無限ではないので、ある桁以下は省かれてしまう。
これを丸め誤差という。
以下のコードを実行してみるとわかるが、
i = 0.2;
for (k=0;k<20;k+=1) {
show_message(string_format(i,20,18));
i += 0.2;
}
i が 4 となるべきところで、GameMakerでは微妙に4より大きい数値になることがわかる。
(※常に大きい数値となるわけではなく、本来の数値より少なくなることもある)
これは、丸め誤差が積み重なってできた誤差になってて、真に4となるわけではない。
なもんで、 if文の image_index == 4 の条件は満たさない、と考えられる。
このような理由で、プログラムの世界では浮動小数な変数をそのまま条件文でイコールを使うのはご法度。と言われてる。
誤差を意識したコーディングを心がける必要がある。
GameMakerの数値は全て浮動小数扱い。だが、整数のまま扱ってる分には問題ない、はず。
(私はプロじゃないんで…かじった知識程度で申し訳ない、間違ってたら指摘ヨロ)
954:名前は開発中のものです。
08/05/05 01:59:41 T1qF9S2G
まあでも、853で言ってるとおり
Other > Animation End イベント使えば
image_index判定する必要ないんだけども。
ちなみにあくまでStepイベントで判定するなら
if (image_index + image_speed >= image_number)
で Animation End イベントと等価になる。