したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

作成に関する質問スレ

1管理人:2011/12/03(土) 12:18:00
作成に関する質問はこちらで

4001名無しさん:2015/08/29(土) 18:49:15 ID:gikvcf3Y
>>3999

返信遅れました。

変えてみましたがどうにもエラーが出ます・・・

4002名無しさん:2015/08/31(月) 19:32:12 ID:QP3AmzsI
>>4001
エラーが出る場合は大抵そのエラーにどこが悪いか書いてあるので読みましょう

4003名無しさん:2015/09/01(火) 03:06:12 ID:r.V.BKMw
すいません質問です。
ボスの行動をランダムにしたいと思っているのですが、うまくいきません。
タイムラインを5個ほど作って、最初のタイムラインが最後のstepまでいったらランダムでほかのタイムラインに移るようにしたいです。
自分でコードを作ってみたのですが、これでは次のタイムラインが実行されません。
回答おねがいします。

自分で作ったコードは下のようです。
timelineBOSS1~5をランダムで実行するようにしたいです。


a=random(5);
if(a==0){
timeline_index=timelineBOSS1;
}
if(a==1){
timeline_index=timelineBOSS2;
}
if(a==2){
timeline_index=timelineBOSS3;
}
if(a==3){
timeline_index=timelineBOSS4;
}
if(a==4){
timeline_index=timelineBOSS5;
}

4004名無しさん:2015/09/01(火) 14:21:30 ID:JRq3ETmU
>>4003
アラームでやるといいですよ

4005名無しさん:2015/09/01(火) 15:07:30 ID:h.YfuaWI
>>4004
返信ありがとうございます。
また、stepで常にtimelineが存在するか調べ、
ない場合はランダムでタイムラインを設定するという方法も思いついたのですがどうでしょうか?

4006名無しさん:2015/09/01(火) 16:27:19 ID:Gklx/UEk
>>4003
random(x)とすると0〜xまでの少数を含む数値を取るのでa==1などに当てはまるのは極まれになってしまいます。
この場合はrandom() ではなく irandom() を使う事で整数のみを取るようになるのでその場合分けが使えると思いますよ。

4007名無しさん:2015/09/01(火) 22:30:00 ID:r.V.BKMw
>>4006
解決しました。ありがとうございます。

4008名無しさん:2015/09/02(水) 08:36:15 ID:v.TybVUY
質問です。
最近のアイワナでよくつかわれる、メッセージボックスを使用しないポーズ画面を作りたいのですが、下記のようにコードを書くと、エラーを吐きます。
どう改善すればよいのでしょうか。
if(flag == 0){
room_speed = 0
instance_create(0,0,pause)
flag = 1
}
if(flag == 1){
room_speed = 50
with(pause){instance_destroy()}
flag = 0
}
よろしくお願いします。

4009名無しさん:2015/09/02(水) 10:11:49 ID:Gklx/UEk
>>4008
エラーが出る場合はその内容も書いた方がいいと思います。

改善点というわけではないのですが、I wanna be the Engine Mu-ge Edition にメッセージボックスを使わないポーズが入ってますので参考にしてはいかがでしょうか。

4010名無しさん:2015/09/02(水) 18:23:10 ID:D7/F9.Uk
質問です。

円を描くリフト、pathで動くリフトにplayerが乗ってる時、
リフトに振り落とされない様にするにはどうすればいいでしょうか?

40114010:2015/09/02(水) 18:32:46 ID:D7/F9.Uk
補足
円を描くリフトについては>>2290を参考にしようとしましたが、
「ラジアンに直す」が全く理解出来ませんでした・・・

4012名無しさん:2015/09/02(水) 20:08:40 ID:IruCbuVA
>>4011
三角関数を扱う上で、角度は度数法ではなく弧度法で表記されます。
例えば、45°をラジアンで表すとπ/4ですよね。
(詳細は数学の知識なのでご自身で調べてください。)
このように、任意の度数をラジアンに変換する関数に、degtorad(x)というものがあります。
すなわち、degtorad(45) = π/4 となるわけです。
>>2290ではAglが度数で表されているので、三角関数にあてはめるときには、
これを用いてラジアンに直して使いなさい、という意味です。

4013名無しさん:2015/09/02(水) 20:42:30 ID:v.TybVUY
>>4009
ありがとうございます!!
できました!!

4014名無しさん:2015/09/02(水) 20:53:03 ID:D7/F9.Uk
>>4012
レスありがとうございます
ご丁寧に書いて頂きましたが、当方数学は全くダメなもので全く理解出来ません

よろしければ>>2290
Agl= ?
agl= ?
にどういう書き方をすればいいか教えて頂けませんか?
回転リフトの為だけに数学を勉強し直すのも苦労の割に見返りが乏しいので・・・

4015名無しさん:2015/09/03(木) 00:30:47 ID:IruCbuVA
>>4014
試していないので正常に動くかわかりませんが・・・
Agl や agl の部分はそのままでいいかと思います。
 vspeed = sin(Agl)*spd;
 hspeed = cos(Agl)*spd;
この部分を、
 vspeed = sin(degtorad(Agl))*spd;
 hspeed = cos(degtorad(Agl))*spd;
に直してみてください。

4016名無しさん:2015/09/03(木) 02:05:28 ID:D7/F9.Uk
>>4015
試してみましたが、書き方が悪いのか>>2290がおかしいのかダメでした…
書いたものを載せるので、間違いをご指摘くださると嬉しいです

デフォであるmovingPlatformのstepに
if (self.vspeed >= 0){
yspeed = vspeed;
}else if(self.vspeed < 0){
yspeed = 0;
}

if (place_meeting(x,y-2,player)) {
player.y += yspeed;
with (player) {
if (place_free(x + other.hspeed, y)) {
player.x += other.hspeed;
}
}
}

Agl += agl;
vspeed = sin(degtorad(Agl))*spd;
hspeed = cos(degtorad(Agl))*spd;

同じくmovingPlatformのcreateに
Agl=3
agl=3
spd=3 *適当に整数を入れました

playerのmovingPlatformとのcollisionに
if (y-vspeed/2 <= other.y) {
if (other.vspeed >= 0) {
y = other.y-9;
vspeed = other.vspeed;
djump = true;
}else if(other.vspeed <0){
y = other.y-9;
vspeed = other.vspeed;
djump = true;
}
onPlatform = true;
djump = true;
}

4017名無しさん:2015/09/03(木) 17:35:42 ID:tb3NW3RU
こんにちは。
キッド君を中心に動いて死んでもその場所で止まったままにするようにしました。
そのとき、gameoverの表示された位置が、ずれるのですが、どうしたら死んだ場所に表示させられますか?
日本語下手ですみません

4018名無しさん:2015/09/03(木) 17:46:57 ID:IruCbuVA
>>4016
コピペして試しましたが、こちらでは正常に作動しましたよ?
もともとmovingPlatformのstepイベントに書いてあったコードが
そのままになっていたりしませんか?
もしそうなら一度コメントアウトして試してみてください。

4019名無しさん:2015/09/03(木) 17:55:51 ID:RxmrF3j2
>>4017
Script -> killPlayer の中に、GAMEOVERを生成するコードが入っています。

おそらく、
 instance_create(view_xview+400,view_yview+300,GAMEOVER);
と書かれているはずですので、本来ならばズレることはないと思うのですが・・・

もしviewのサイズや拡大率などを変更しているのならば、
 idx=instance_create(view_xview+view_wview/2,view_yview+view_hview/2,GAMEOVER);
 idx.image_xscale = view_wview/view_wport;
 idx.image_yscale = view_hview/view_hport;
等と書き換えてみてはいかがでしょうか。

あとはGAMEOVERのスプライトのoriginがしっかりと中央に来ていることも確認してみてください。

4020名無しさん:2015/09/04(金) 01:55:30 ID:D7/F9.Uk
>>4018
出来ました!
まさにmovingPlatformのstepの元のコードを消していませんでした。
大変失礼しました、そしてありがとうございました。

もし可能でしたら引き続きpathで動くmovingPlatform、
もしくは真上真下真横の4方向以外の角度に動くmovingPlatformにplayerが乗った時も
自然な感じにplayerが乗ってる方法を教えて頂けると助かります

4021名無しさん:2015/09/04(金) 16:15:34 ID:40z832N6
セーブの仕方をsキーにしようと思って
Spriteから変えたんです。
一応sセーブはできたのですが、
sセーブをすると全てのセーブが反応します。
sを押したとこだけを反応させるにはどういたらいいですか?

4022名無しさん:2015/09/04(金) 16:33:10 ID:bp5PiC0g
>>4021
それってplayerがセーブブロックに触っているときにsを押すとセーブされるものですよね

確認ですがsキーを押す処理はcollisionイベントに入れてます?

4023名無しさん:2015/09/04(金) 18:01:54 ID:40z832N6
>>4022
たぶん入ってます。

4024名無しさん:2015/09/08(火) 20:44:40 ID:tb3NW3RU
死んだときのGAMEOVER画面がKamilia3みたいな感じにする方法教えてください

4025名無しさん:2015/09/10(木) 07:34:07 ID:KI8BQx8I
>>4021
書き込む前に過去スレを見ましょうね。Ctrl+Fを押してキーワードを入力して探しましょう。

savePointMediumオブジェクトを複製し作りたいスクリプトに変える(名前はsavePointpressedSkyeとする)
savePointオブジェクトを複製し(名前はsavePointpressedとする)bulletとのコリジョンイベントをプレイヤーに変えて
if(saveTimer < 0 && instance_exists(player) == true&&keyboard_check_pressed(ord("S"))){
saveTimer = 30;
image_index = 1;
image_speed = 0.017;
saveGame();
}
に書き直す。
savePointpressedSkyeのParentにsavePointpressed

4026名無しさん:2015/09/13(日) 21:46:52 ID:nWRzCyYk
rMenuの部屋にはmenuSelect内のdraw_spriteで描かれたplayerとsprCheeryがありますが、
なぜこれらはアニメーションしてるのですか?
他の部屋で全く同じコードを実行してもアニメーションしてくれません。
rMenuの部屋内のどこの設定を弄ってるのですか?

4027名無しさん:2015/09/14(月) 22:37:37 ID:bp5PiC0g
8.1をまた新たにダウンロードしようと思い
公式ページを見たのですが8.1がどうしても見つからず困っています

もう公式ページからはダウンロード出来ないのでしょうか


公式じゃなくたっていいじゃんとかいう回答はしないでください
ウイルスやら余計なものが一緒にインストールされたら嫌なので

40284027:2015/09/14(月) 22:47:18 ID:bp5PiC0g
自己解決しました

4029名無しさん:2015/09/17(木) 13:16:11 ID:qn/RBcg.
GUYにあった猛反発ソファーを作りたいんですができません。
ソファーに当たったらキッド君が上には飛ぶんですが、通常ジャンプ位しか飛びません。
どうしたらいいんでしょうか?
エンジンはnekoron editionです。

4030名無しさん:2015/09/17(木) 14:06:31 ID:utg1Z80k
draw_spriteで描いたspriteのx軸0とy軸0にobjectAを作成したいのですが
どうすればいいでしょうか?
因みに使用してるのは8.1です

4031名無しさん:2015/09/18(金) 07:03:51 ID:k9zlPcDI
>>4029
ソファーに当たったときにplayerのgravityを0に、
maxVspeedを9よりも大きな値に変え、アラームイベントなどを使って
時間が経ったらそれらの値が元の値に戻るようにすればいいです。

4032名無しさん:2015/09/19(土) 16:31:32 ID:qn/RBcg.
>>4031
player.gravity=0;
maxVspeed=10;
player.vspeed=-10;
上記で天井にぶつかるまで行きましたが、原作よりスピードが遅かったので
player.gravity=-15;
とだけ記述しアラームイベントで重力を元に戻して再現できました。
ありがとうございました。

4033名無しさん:2015/09/20(日) 01:42:06 ID:HSsbQRFY
Game_Maker8.0Pro、yuuutuエンジンを使用しております。
transition_kindを使わずに暗転演出をさせる方法がありましたら作り方を教えて下さいorz
よろしくお願いします。

4034名無しさん:2015/09/20(日) 13:00:40 ID:bp5PiC0g
>>4033
※かなり長文になってしまいました が 結構使えると思います

proを使っているとのことなのでよりスマートな方法で実装してみようと思います
今回はObjectsにオブジェクトを入れないでScriptで機構を作ります

transition_commandというScriptの中身です
createCommand = argument0;
updateCommand = argument1;
drawCommand = argument2;
endCommand = argument3;
time = argument4;

tsObj = object_add();
object_event_add(tsObj, ev_create, 0, "var transitionTime;"+createCommand);
object_event_add(tsObj, ev_step , 0, updateCommand);
object_event_add(tsObj, ev_draw , 0, drawCommand);
object_event_add(tsObj, ev_alarm , 0, endCommand);
instance_create(0,0,tsObj);

tsObj.transitionTime = time;
with(tsObj)
{
alarm[0] = transitionTime;
}
引数に実行したいコードを入れるとコードを実行してくれるといったものです


transition_black_fadeのスクリプト中身です(見慣れない書き方ですが)
time = argument0;
createCommand =
"
alpha = 0
"

updateCommand =
"
//......???
"

drawCommand =
"

draw_x = view_xview[0];
draw_y = view_yview[0];
draw_end_x = view_wview[0] + draw_x;
draw_end_y = view_hview[0] + draw_y;

draw_set_color(c_black);
draw_set_alpha(alpha);
draw_rectangle(draw_x, draw_y, draw_end_x, draw_end_y,false);

"

endCommand =
"

"
transition_command(createCommand, updateCommand, drawCommand, endCommand,time)

それぞれのコマンドについて解説
createCommand---Createイベントに相当します
updateCommand---Stepイベントに相当します
drawCommand---Drawイベントに相当します
endCommand---timeで指定した時間になると実行される
            timeの時間とフェードの時間を同じにするようにするといいでしょう
           ここにroom_gotoなど加えると・・・・・

このようにすると白のフェードやその他もろもろが オブジェクトをわざわざ用意しなくても
transition_black_fadeのようなScriptの書き方をすればよくなります

さらにいちいちobject_addを毎回書かなくても
transition_commandが代わりにやってくれるのでコードが短くなります

上にupdateCommandだけ抜いて書いといたのでだんだん黒くなるようにupdateCommandの中身を考えてみてください
因みにコマンドにはtimeを入れた変数transitionTimeが予め用意されているので活用されてみてください

できたと思ったら適当なオブジェクトに
transition_black_fade(room_speed)
と入れて見てください
上手くいけばフェードします(Updateに入れる時は気をつけて)

因みにendCommandを
endCommand = argument1
と引数にすると・・・・・

transition_black_fade(room_speed,"room_goto(stage)")
---フェードが完了したらルーム移動

transition_black_fade(room_speed,"playerkiller()")
---フェードが完了したらキッド君を殺す

このように更に自由度が上がります

4035名無しさん:2015/09/20(日) 14:36:56 ID:HSsbQRFY
>>4034
レスありがとうございます。
proはimage_angleとGradient Fillを使いたいと思って購入していたのでこのような使い方があるとは知りませんでした。

Scriptは書けたと思います。こういう書き方は初めて見るのでなにをどうしたらいいか全然思いつきません;;
オブジェクトの作り方も教えて頂けるとありがたいですorz
触れたら徐々に暗転しルームをワープするように作りたいです。

transition_black_fadeのスクリプト中身の最後は
transition_command(createCommand, updateCommand, drawCommand, endCommand,time)
で合ってますでしょうか?

4036名無しさん:2015/09/20(日) 18:14:03 ID:c0o8hCzQ
ゲームアイコンを自作し、Gloval Game Settingsのとこでアイコンを選択
し、ゲームを配布しようと思いexe化しようとしたところ
failed to replace the iconと出て読み込んでくれません。
どうすればいいのでしょうか。エンジンはyuuutu 2.13です。

4037名無しさん:2015/09/20(日) 20:14:22 ID:bp5PiC0g
>>4035
まず transition_black_fadeの最後は
transition_command(createCommand, updateCommand, drawCommand, endCommand,time)
までで合っています
これがないと正常に動きません

使い方がちゃんと伝わってなかったようなので詳しく書くと
(updateCommandを正しく書けている前提)

transition_black_fadeはどのタイミングで書いても基本的に大丈夫です
フェードしたいタイミングで書きます
なので何か専用のオブジェクトを作ることなどは一切ありません
(Script内でそれ専用のオブジェクトを生成しているため)

ただし毎回呼ばれたりすると不具合が発生するはずです
なのでUpdateに書くときはif文なので毎回呼ばれないようにします

例えば
bossオブジェクト
if(hp == 0)
{
transition_black_fade(120);
instance_destroy();
}

触れたら・・・・・なので
Collisionイベントに書けばいいのではないでしょうか
また黒から元に戻す場合は
transition_black_fadeを参考に
同じようなものを作ってみてください

ルームを飛ばす場合は
transition_black_fadeのendCommandを引数にしてtransition_black_fade(120,"room_goto(stage)")
と書いてみてください



一番のポイントはコマンドを渡せば
それ専用のオブジェクトを作らなくても作れてしまう
ということです

40384037:2015/09/20(日) 20:17:38 ID:bp5PiC0g
この仕組みは上級者でも使えると思いますので
>>4034
見たほうがいいと思います

4039名無しさん:2015/09/20(日) 22:46:39 ID:HSsbQRFY
>>4037
ちゃんと機能するか試しに
if(hp == 0)
{
transition_black_fade(120);
instance_destroy();
}
を書いてみたのですがなにも起こりませんでした・・・
スクリプトのコードを理解できてなくて使い方がわかってないです;;
長文で教えていただいたのに申し訳ないですorz

4040名無しさん:2015/09/20(日) 22:51:37 ID:bp5PiC0g
>>4039
updateCommandのほうは何か書きましたでしょうか

さすがに全ての答えを教える訳にはいきませんので
updateCommandのコードはわざと空白にしてあります

ヒントはalphaをどうするかです

4041名無しさん:2015/09/20(日) 23:27:55 ID:HSsbQRFY
>>4040
updateCommandにコードを書いたら徐々に暗くすることができました。
見落としていてすみませんorz

黒から元に戻す場合はtransition_black_fade2てきなスクリプトを作って内容を変更すればいいのでしょうか?

4042名無しさん:2015/09/20(日) 23:46:06 ID:bp5PiC0g
>>4041
そうです
transition_black_fadeのendCommandに

transition_black_fade2()

と書くとよさそうですね

4043名無しさん:2015/09/21(月) 00:39:10 ID:HSsbQRFY
>>4042
試してみたのですがスクリプトの書き方が間違えてるせいで元に戻ってくれませんでした;;

transition_black_fadeスクリプト
endCommand =
"
transition_black_fade2()
"

transition_black_fade2スクリプトのcreateCommand =とupdateCommand =にはtransition_black_fadeスクリプトの逆の値を入れました。

ボスオブジェクト
if(hp == 0)
{
transition_black_fade(120);
instance_destroy()
alarm[0]=120
}

アラーム0イベントに
alarm[0]=1
transition_black_fade2(120);
と書いてみたのですが元に戻ってくれません。

どこが間違っているか教えて頂けると助かりますorz

4044名無しさん:2015/09/21(月) 00:56:57 ID:z4eksiDg
スプラッシュ画面ってクリックすると消えてしますのですが、
消えないようにするにはどうすればよいのでしょうか。
特定のキーを押すと消えるようにしたいのですが・・・

4045名無しさん:2015/09/21(月) 01:02:06 ID:bp5PiC0g
どうやら
alarm[0]=120が上手くいってないようですね
だからその先のコードも上手くいってない

というよりその書き方はしないほうがいいと思います
せっかくフェードが終了したときに呼ばれる
(というかこれはalarmイベントなのだが)

endCommand
があるのでそれ使いましょう

いままでのやりとりの中にヒントが書いてありますので見てください

これがこのスクリプトの真骨頂と呼ぶべきところなんだと思います

40464045:2015/09/21(月) 01:03:43 ID:bp5PiC0g
すいません
>>4045>>4043へのレスです

4047名無しさん:2015/09/21(月) 01:05:58 ID:bp5PiC0g
>>4044
GameMakerのバージョン教えて貰っていいですか?
ちょっと8.1とstudioか分からないとどこのことを指しているのか見当がつかないので

4048名無しさん:2015/09/21(月) 01:12:45 ID:bp5PiC0g
>>4036
画像のファイルが適切なサイズじゃない可能性がありますね・・・・・
普通その手のアイコンというものは
16x16
32x32
64x64
ここらへんのサイズで作ることが多いですね
サイズがどうなっているか確認してください

4049名無しさん:2015/09/21(月) 01:48:19 ID:HSsbQRFY
>>4045
アラームイベントだったんですね・・・理解できてなくてすみませんorz

教えて頂いたレスをよく見て作ってみます。
長文で教えて頂きありがとうございました。

4050名無しさん:2015/09/21(月) 07:52:39 ID:cqVrrh7k
>>4048
画像サイズは64*64にしてありました
初期状態でもこのエラーが出たりするのでよくわからない
んですよねぇ・・・

4051名無しさん:2015/09/21(月) 14:14:49 ID:cqVrrh7k
>>4050
ゲームメーカーを再ダウンロードしてみたところ大体
正常に起動できるようになりました。

4052名無しさん:2015/09/22(火) 23:19:04 ID:29ky80yA
セーブデータ選択画面のカーソール移動を縦移動にしようと
menuSelect のコードの中で vk_right を探したのですが見つかりません。
どこにあるのでしょうか?

4053名無しさん:2015/09/23(水) 02:21:26 ID:7wISrPO2
yuutu edition v2以降を使っているのですが
セーブデータをファイルにまとめたところ
menuselectオブジェクトでデスタイムが描画してくれません
いろいろ試行錯誤しましたが、ダメみたいです
誰か助言お願いします

4054名無しさん:2015/09/23(水) 11:13:37 ID:zjpwxOGU
>>4052
menuselectのstepイベ内にglobal.rightbuttonもglobal.leftbuttonもちゃんとありますよ。
これらはinitオブジェクトのstepイベ内でvk_right,vk_leftで定義されてます。

4055名無しさん:2015/09/23(水) 12:51:23 ID:bK7rWgdg
>>4054

出来ました
ありがとうございます!

4056名無しさん:2015/09/23(水) 13:42:34 ID:AUNaSwhI
オブジェクトから拡散リンゴが出るのは作れたのですが、回転リンゴが作れません・・・
作り方を教えて頂けないでしょうか?よろしくお願いします。

4057名無しさん:2015/09/23(水) 15:59:23 ID:k9zlPcDI
>>4053
セーブデータはgmkファイルと同じフォルダに入れてありますか?

>>4056
>>333を参考にしましょう

4058名無しさん:2015/09/24(木) 02:28:39 ID:tb3NW3RU
背景を動画、というか動くものにしたいのですがどうしたらいいのですか?
例で言うと上下針マスターやpopularityのラストステージのようなイメージです。

4059名無しさん:2015/09/24(木) 03:01:47 ID:7wISrPO2
>>4057
いえ、セーブデータは別のフォルダにまとめています
例えば、savefileといったフォルダです

4060名無しさん:2015/09/24(木) 20:06:13 ID:IQa9jy7Y
真っ暗で一部分のみ明るいステージを作っているのですが
キッド君とそれ以外の一部分(例えば電灯が設置してある場所)など
複数箇所明るくする方法がわかりません。

過去ログのキッド君の周りを暗くする方法などを参考に応用しようとしてみましたが
うまくいきません。どうしたらうまくいきますでしょうか?
よろしくお願いします。

4061名無しさん:2015/09/24(木) 20:23:22 ID:W5tZffCI
>>4060
その電灯は移動しないのだとしたら、その部分だけ背景画像を透過色処理すればいいのでは?

4062名無しさん:2015/09/24(木) 21:54:55 ID:bp5PiC0g
>>4060
proでしょうか?
proであればsurfaceを使ってできますよ

surfaceを使った複数明るくする方法を
(照明が移動しても問題なく動きます)
ニコニコ動画乗せてありますので
もし良ければ参考に

gamemaker surfaceで検索

ただぼかしについては良く知りません

4063名無しさん:2015/09/24(木) 22:34:35 ID:D7/F9.Uk
質問です

object1という名のオブジェクトが100個、それぞれhensuu1〜100という変数を持ってるとします
これを変数ランダムで1個1個出していくにはどうすればいいですか?

hensuu84→hensuu16→という風に被る事なくランダムで出していって計100個順番に出したいです

4064名無しさん:2015/09/24(木) 22:55:55 ID:bp5PiC0g
>>4063
proバージョンかどうか教えてください
proバージョンだとliteよりも簡単な方法があるのですが・・・・・

4065名無しさん:2015/09/25(金) 03:02:48 ID:D7/F9.Uk
>>4064
8.0liteです

4066名無しさん:2015/09/25(金) 07:03:28 ID:k9zlPcDI
>>4059
セーブデータはgmkファイルと同じフォルダに入れないと機能しませんよ

4067名無しさん:2015/09/25(金) 18:33:30 ID:IZ9u.tTE
>>4060
参考になるかはわかりませんが黒く塗りつぶした正方形のオブジェクトを敷き詰めることでできます。
まず電灯のオブジェクト・黒い16×16の正方形のオブジェクト・正方形を敷き詰めるためのオブジェクトを用意し、
(それぞれobjectA・objectB・objectCとします)
objectBのステップイベントに以下を入力します。
if(instance_exists(player)){
a = distance_to_point(player.x,player.y);
}
b = distance_to_object(objectA);
if(a < b){
image_alpha = (a - 70)/50;
}else{
image_alpha = (b - 70)/50;
}

次に、objectCのクリエイトイベントに以下を入力します。
for(i = 8;i<800;i+=16){
for(t = 8;t<608;t+=16){
instance_create(i,t,objectB);
}
}

あとはobjectAをステージの好きな位置に置き、objectCを適当な位置に置くだけです。
ただし大量のオブジェクトを使うため、objectBのサイズが小さいと動きが重くなってしまう可能性があります。

4068名無しさん:2015/09/25(金) 23:09:43 ID:bp5PiC0g
>>4065
はい では今回はliteで使える方法でお答えします

まず「被る事なくランダムで」というところに着目していきます

これはトランプが当てはまるのでは無いでしょうか?

トランプゲームをすれば分かりますが
元々ジョーカーを除いた52枚のカード
数字・・・被りませんよね?
しかも引いたカードと言うのはランダムに数字がくる・・・・・

これ使えると思いませんか?

と言うことでトランプのシャッフルをプログラムで再現すれば
100個あったとしても被ることなくそしてランダムで出せますね



トランプのシャッフルの手順についてまとめます

1.まず52枚のカードを用意します (これが無ければ始まらない)
2.シャッフルをします
注意:
ここでのシャッフルはデッキの中から適当に2枚選び
その2枚の位置を交換するという方法を取ります

3.ちゃんとランダムか実際にカードを1枚ずつめくり確かめます


ではこの流れをプログラムで直しましょう


まずカードですが配列を作ったほうがいいでしょう

配列・・・ですがこれはfor文で52枚のトランプを疑似的に作ります

ヒント:index[i] = i+1

これで1〜52まで数字が書かれたものが出来ました
(とりあえずこれトランプね)


シャッフルしていきましょう

シャッフルですが
変数を2個用意しましょう
どちらもランダムでいいような気がしますがここは
a = i mod 52

と片方を順番に数字を指定します
もう1つはランダムを使ってカードを指定

ここで数字が被ったらwhile文で違う数字出るまで
ランダム使いましょう

そのあとに入れ替えですが簡単です

例えば変数a, bを入れ替える時は

temp = a;
a = b;
b = temp;

このようにします

注意:
ここのシャッフルのプログラムは1000回程やらないと上手く混ざりません


あとはカードをめくってランダムですね
これは簡単です
show_messageで配列を最初から順に見ていくだけです

以上でシャッフルのプログラムは終わりです

このトランプのシャッフルプログラムを応用すると
やりたいことが上手くいくはずですよ

4069名無しさん:2015/09/25(金) 23:53:18 ID:gJ2N9VqM
質問です
キッド君がリフト(movingPlatform)に乗っている状態でトリガーに触れると、そのリフトごとキッド君が上に移動する
オブジェクトを作ったのですが、乗っているときはちゃんとキッド君がリフト上にいるのに、
トリガーに触れると、リフトが上昇するだけでキッド君がリフトをすり抜けて下に落ちてしまいます。

試しにキッド君がそのオブジェクトに触れたときに上昇するように作ってみたところ、うまくいきました。
ですがトリガーに触れたときにキッド君ごと上昇する設定がうまくいきません。
どのようにすればよいでしょうか?

4070名無しさん:2015/09/26(土) 07:03:19 ID:Lp2Xjyw6
質問なんですが
ボスの攻撃で
キッド君を追尾するような攻撃をするときどうすればよいでしょうか

40714060:2015/09/26(土) 08:48:40 ID:IQa9jy7Y
>>4061 >>4062 >>4067
返答ありがとうございます。
pro版ではないので>>4067様のを参考にさせていただきます。
ありがとうございました。

4072名無しさん:2015/09/26(土) 16:20:17 ID:FUVOpcis
アイワナの制作をしているんですがタイトルの変更方法がわかりません。
出来るだけ詳しく回答してくれると嬉しいです。お願いします!

使っているソフトは
・yuuutu edition ver2.13

4073名無しさん:2015/09/26(土) 18:23:29 ID:7wISrPO2
>>4066
いや、セーブデータはgmkのフォルダの中のセーブデータフォルダに入っています

4074名無しさん:2015/09/26(土) 19:24:06 ID:bp5PiC0g
>>4073
パスについて知る必要があるようですね

ファイルのパスには絶対パスと相対パスというものがあります
基本的には相対パスのほうを使います
なので相対パスについての知識を

相対パスはファイルを探している人に
「ここにこのファイルがありますよ」
とファイルを探している人を基準にして位置を教えます
まぁこんな感じで覚えてください

で本題です

まず >>4066 の
「セーブデータはgmkファイルと同じフォルダに入れないと機能しませんよ 」
ですがこれは
「セーブデータフォルダからファイルを出して、gmkと同じフォルダに入れないと読み込みません」
と言ってます

何故か?
相対パスの位置がその探している人と同じ場所でないといけないように設定されています


それでは
「セーブファイルのフォルダの中にsave1があるよと教えます」

"save1"

"savefile/save1"

とこのような表現に変わります

「/」 が 「の中の〜」 という表現だと思ってください

"savefile/save1"

"savefileの中のsave1"

このようにするとセーブデータのフォルダの中にあるファイルを読み込めるはずです

4075名無しさん:2015/09/26(土) 20:57:26 ID:D7/F9.Uk
>>4068
すみません何度も読み直しましたがさっぱりでした
簡単なやり方があれば試そうと思いましたが厳しそうなので諦めます

4076名無しさん:2015/09/26(土) 21:54:24 ID:7wISrPO2
>>4074
助言ありがとうございます
そのようにプログラミングした上でのです。
menuselectでのロードなどは、できるのですが
なぜかセーブファイルのフォルダの中に入れてしまうと、デス数タイムが描画されません

4077名無しさん:2015/09/28(月) 19:39:42 ID:tb3NW3RU
object_Aが消えたとき、object_Bも消える
ってどのようなコードになりますか?

40784076:2015/09/28(月) 20:27:37 ID:7wISrPO2
デスタイムを描画するオブジェクトの説明を忘れていました
menuselectのdrawイベントです
よろしくお願いします

4079名無しさん:2015/09/28(月) 21:18:16 ID:4Vl/VcjQ
>>4077
-Stepイベント-
if(instance_exists(object_A)==0){
with(object_B) instance_destroy();
}
これでどうでしょうか。
object_Aに書く場合・・・object_Aをselfに変える
object_Bに書く場合・・・object_Bをselfに変える

instance_exists→オブジェクトの存在チェック
instance_destroy→オブジェクトの破棄
Game Maker まとめWikiを見るともっと詳しく書いてあります。
>>4078
スクリプトのsaveExeなどにもちゃんと"savefile/save"などと書きましたか。
もしかしたら抜けてる所があるかもしれません。

4080名無しさん:2015/09/30(水) 00:26:13 ID:AUNaSwhI
>>4072
worldオブジェクトのroom Startのコードを見ればわかるかと。
基礎的なことなので調べればすぐ出てくると思いますけど・・・

40814077:2015/09/30(水) 00:29:04 ID:tb3NW3RU
>>4079
ありがとうございます
object_Bが複数個ある場合は&をつければいいですか?

4082名無しさん:2015/09/30(水) 00:34:35 ID:tb3NW3RU
ワープに触れると

FATAL ERROR in
action number 1
of Collision Event with object player
for object roomChanger:

Unexisting room number: 794

と表示されます、
ほかのルームでは以上なかったのですが、何が原因かわかりますか?

4083名無しさん:2015/09/30(水) 12:06:02 ID:AUNaSwhI
変数1のとき○○オブジェクトに触れてなければjumpbuttonを無効にするコードは可能でしょうか?
shiftキーではなくjumpbuttonを無効にです。
よろしくお願いします。

4084名無しさん:2015/09/30(水) 18:01:16 ID:4Vl/VcjQ
>>4081
"object_B"とは、全てのobject_Bの事を指します。
なので、"object_B"と書いてあれば全てのobject_Bが消えます。
(あと、selfに変えるなどと書きましたが、変えなくてもちゃんと動きます。)
逆に、複数のobject_Bの中から一つだけ消したい時は、
インスタンスIDを使うので、書き直さないと出来ません。
>>4083
ジャンプできないようにするという事でしょうか?
もしそうなら、スクリプトフォルダの中のplayerJumpに、

if(変数1==0 or 変数1==1 and place_meeting(x,y,○○オブジェクト)==1){
if(global.grav=0){
//省略
djump = false;
}
} }

と書けば出来るんじゃないでしょうか。
(ゆううつエンジンで書いた時の例です。)

4085名無しさん:2015/09/30(水) 18:21:43 ID:ANR0TttE
先日勉強を始めた超初心者です
オブジェクトの前で↑キーを押したらメッセージが
表示されるという処理はどうすればできるのでしょうか?

4086名無しさん:2015/10/01(木) 23:26:23 ID:7wISrPO2
>>4079
助言ありがとうございます
見たところ、ちゃんと書いてあります
deathtimeとsaveが一緒になる前のヴァージョンでは出来たのですが…
助言してくださってる方は、私と同じ状況で描画を完了されているのでしょうか?
よろしくお願いします

4087名無しさん:2015/10/02(金) 01:46:48 ID:gikvcf3Y
キッド君の銃を↓でも撃てるようにし、制限(3発)をなくす方法を教えて下さい。

4088名無しさん:2015/10/02(金) 14:33:40 ID:c1e0K7Uw
supersoundを導入したいのですが、いろいろ調べても分かりませんでした
どうすればそのエクステンションを導入できるのでしょうか?

4089名無しさん:2015/10/02(金) 14:36:05 ID:beFhUa0Y
4088の者です
インストールを試したら出来ました。ごめんなさい。

4090名無しさん:2015/10/03(土) 18:47:17 ID:4Vl/VcjQ
>>4086
ゆううつエンジンのver 2.11で試してみたところ、問題なく
動きました。
titleButtonやPlayerも書き直しましたか。

4091名無しさん:2015/10/04(日) 00:27:05 ID:tb3NW3RU
画像がどうしても載せたかったんで、お手数ですがこちらでご覧いただければ嬉しいです。

ttps://twitter.com/koppe_pan_movie/status/650329436160593920
以前までwarpを「roomTo=sample」でsampleの部屋までワープできたのですが
突然こんなエラーが出ました。
しかし、エラーが起こる前に置いたワープは問題なく別の部屋に行くことが出来るのですが
エラーが起きたあとに置いたwarpだけワープできません・・・
原因わかるかた、教えてください
お願いします

4092名無しさん:2015/10/04(日) 02:34:48 ID:sSMeizFE
既出かもしれないですが質問です

①通常時は縦にバウンドし、トリガーに引っかかると上に向かって飛んで来るリンゴ(さくらんぼ)を作りたいのですが、どうすればいいですか?
通常時→bound_tate
トリガー→fruit_free
こんな感じです。
②消える足場に針を仕込んでいるのですが、この足場の下から当たっても死なないようにするにはどうすればいいですか?
③bound_randomのリンゴ(さくらんぼ)を一定の区間外から出さないようにしたいのですがどうすればいいですか?

回答お願いしますm(_ _)m
エンジンはゆううつエディションです

4093名無しさん:2015/10/06(火) 18:36:42 ID:W5tZffCI
>>4092
既出だと思うのならCtrl+Fで検索せいや

で、

①はトリガーに触れるとオブジェクトが変更されるのかな
だとすると、別の林檎オブジェクト作らにゃならん。
トリガー(何か適当に。既存のやつではだめ)用意。
で、別の林檎の中にトリガーAとの衝突判定イベント追加。
で、その中に上に上がる林檎を生成する。というのを作る。
別のやり方もあるけどね。

②そもそも消える足場に下から触れたらそのブロックが消える気がする...

③見えないオブジェクトを林檎をバウントさせたい周りに配置して、
バウンドする林檎の衝突判定イベントにその見えないオブジェクトを指定。
そしてその中に跳ね返るということを指定してあげればいいんでないの?

オブジェクトのイベントの書き方やらは割愛します。
それくらいggればいっぱいでてくるので

4094名無しさん:2015/10/08(木) 02:43:08 ID:ICJT.iQQ
>>4093
回答ありがとうございましたm(_ _)m

4095名無しさん:2015/10/09(金) 21:30:44 ID:qlRfvW9A
2つ部屋を用意して、それぞれの部屋に看板Aと看板Bを設置しているんですが、看板Bを読むと内容が看板Aと同じものになってしまいます。
看板Aと看板Bで内容が異なるようにするにはどうすればいいのでしょうか。

4096名無しさん:2015/10/11(日) 23:01:30 ID:tb3NW3RU
今ボスを作っているのですが、りんごがパーンってなるのわかりますか?
あのー、大きいのが飛んできたあとにそのりんごが弾けて12方向くらいに通常のりんごが飛んでいくやつです
それのつくり方教えてください!

4097名無しさん:2015/10/11(日) 23:28:45 ID:k9zlPcDI
>>4095
string関数を使い、CreationCodeに入力したテキストを表示させればいいのではないでしょうか。
例えば、イベントに
show_message(string(mes));
と入力し、CreationCodeに
mes = "iwanna"
と入力すれば「iwanna」というメッセージを表示させることができます。
それか看板のオブジェクトを2種類用意し、それぞれに異なったメッセージを入力するという方法もあります。

>>4096
Ctrl+Fで「拡散」と検索してみるといいですよ。
グーグルで検索してもたくさん出てきます。

4098名無しさん:2015/10/12(月) 00:19:02 ID:qlRfvW9A
>>4097
ありがとうございます!やってみます!

4099名無しさん:2015/10/13(火) 17:01:44 ID:tb3NW3RU
objectのアニメーションを再生して、一度最後まで再生したらオブジェを
その部屋から削除する方法なんてものはありますか?
また、キッド君が死ぬとアニメーションを止めたいです

4100名無しさん:2015/10/13(火) 19:36:35 ID:z4eksiDg
>>4099
何度もこの掲示板に書き込んでるんだけど・・・
調べればわかることだよねえそれぐらい・・・

4101名無しさん:2015/10/13(火) 20:05:52 ID:tb3NW3RU
>>4100 調べ方がわからないからここに書き込んでいるのですよ。

4102名無しさん:2015/10/13(火) 22:10:53 ID:2zdoig3k
正論すぎる

4103名無しさん:2015/10/13(火) 23:25:00 ID:k9zlPcDI
>>4101
アイワナ製作@基本・応用wikiを見るといいですよ。
よく使う関数や変数などの基礎的な情報が載っています。
>>4099はどれも製作wikiに載っている基礎的な知識のみで出来ることなので、
この掲示板で質問する前に製作wikiをよく読んで知識を蓄えておくことをおすすめします。
また、GameMakerまとめWikiにはより多くの関数の説明が載っているのでそちらも見ておくと良いです。
もしもそれらのサイトで得た知識だけで対応できなければ、グーグルで「アイワナ 製作 ○○」と検索する、
Ctrl+Fでこの掲示板内をキーワード検索するなどの方法で調べましょう。
聞きたいことがあるときは出来るだけ調べたり考えたりしてから書き込むといいです。

4104名無しさん:2015/10/14(水) 00:29:14 ID:KI8BQx8I
1つのオブジェクトから右にリンゴが3つずつ一定間隔で出る作り方を教えて下さい。宜しくお願いします。

4105名無しさん:2015/10/14(水) 10:52:53 ID:bp5PiC0g
>>4101

というかねこれはみんなに向けてのことだけど

もうちょっといろいろなところを押してみて何があるか見てみなよ
今回の>>4099の質問だってAdd Eventのところ何があるかよく見ておけば
すぐにAnimation Endイベントを使えばいいんだって分かると思う

あとは何も改造してないエンジンの中身をみる
人のコードを見ることって重要だよ?
もしかしたらこんな関数があったのかって知れる場合もあるから
もしそれで見ていって分からない関数があれば
GameMakerまとめWikiのトップの左のほうに検索欄があるから
そこに関数名を打ち込んでみるとか

それでも分からないものがあれば
実際にその関数を色々試してみてどうなるのかみればいい

間違いなく制作力が上がると思うよ


基本的に今回の>>4099の答えはそれで見つかるはず

・・・・・正直人に頼りすぎなんじゃない?

41064099 です:2015/10/14(水) 16:35:15 ID:tb3NW3RU
>>4103 >>4105
そうですね。私が人に頼ろうとする姿勢が皆さんを不快な気持ちにさせてしまいました。
そして、それでもアドバイスをくれた>>4103 さんありがとうございます。
しばらくはここに書き込まず、自分でコードを勉強しようと思います。

4107名無しさん:2015/10/15(木) 08:08:44 ID:KI8BQx8I
オブジェクトが画面内(800x600)の右上右下の範囲から左に移動するコードの書き方を教えて頂けないでしょうか;;
ルームの大きさが1600x1200でもキッド君が映っている画面内の端から移動させたいと思ってます。
宜しくお願いします。

4108名無しさん:2015/10/15(木) 08:12:33 ID:KI8BQx8I
>>4107
書き忘れましたorz
GameMaker8.0Proを使用しyuuutuエンジンを使っております。

4109名無しさん:2015/10/15(木) 22:58:35 ID:c1e0K7Uw
トリガーに触れたときに画面を一瞬白くフラッシュさせるのってどうすればできますか?

4110名無しさん:2015/10/16(金) 00:28:30 ID:D7/F9.Uk
i wanna marchen の耐久みたいに、ビューがズームアウトしてる時に背景の絵が800×600のままにするにはどうすればいいでしょうか?
もしビューを分ける?というのでしたらやり方が皆目分からないので詳しく教えてほしいです

また、I wanna be the one,two,threeのレース面みたいに、カメラが3か所映していますが、
これもビューを分ける?というやり方でしょうか?

4111名無しさん:2015/10/16(金) 18:34:58 ID:k9zlPcDI
>>4107
view_xview(画面に映っている範囲の左端の座標)という変数を使えばできます。
まずオブジェクトのstepイベントに以下を入力。
x = view_xview + i;
i -= spd;
次にcreateイベントで変数iとspdの値を設定。
iは画面左端のx座標を0としたときの初期位置、spdは移動速度を表します。

>>4109
サイズが800×600で白塗りのオブジェクトを作り、少し時間が経ったら消えるようにします。(objectAとする)
次に、トリガー針のstepイベントのコードを別のオブジェクトのstepイベントにコピーし、、
トリガーが発動したときに速さを変えるようにコードが書かれているはずなので(エンジンによって仕様が異なりますが)
その部分をinstance_create(view_xview,view_yview,objectA)と書き換えればできます。

4112名無しさん:2015/10/16(金) 18:52:39 ID:k9zlPcDI
>>4110
i wanna be marchenのプレイ動画を見ましたが、どの部分を指しているのか分かりませんでした。
1:20前後の部分ならビューを分ければできるはずです。

カメラで3ヶ所を映す方法ですが、おっしゃる通りビューを分けることでできます。
ルームのview設定を見るとview0だけが太字になっているのでview1とview2をクリックし、下側のチェックを入れてください。
view1とview2が太字になるはずなので、View in room(どこを映すか)とPort on screen(どこに表示するか)をそれぞれ設定してください。
次に、別々の場所を映すために専用のcameraオブジェクトを作ります。
view_xview = floor(player.x/800)*800;
view_yview = floor(player.y/608)*608;
通常のcameraオブジェクトには上記のようにコードが書かれていますが、
これだと3つのカメラが同じ場所を映してしまうので以下の例のように書き換えます。
view_xview[0] = floor(player.x/800)*800;
view_yview[0] = floor(player.y/608)*608;
view_xview[1] = player.x - 200;
view_yview[1] = player.y - 152;
この場合、view0は通常の範囲を、view1はプレイヤーの移動に合わせて、view2はルームで設定したように映されます。
また、view_xportなどのview関連の変数を使えばルームで設定した値をプレイ中に変更することができます。

4113名無しさん:2015/10/16(金) 19:16:09 ID:c1e0K7Uw
>>4111
そのobjectAが少し時間がたったら消えるようにする方法が分からないんですがどうすればいいんでしょうか?

4114名無しさん:2015/10/16(金) 23:14:02 ID:bp5PiC0g
>>4113
時間経過と言えば アラーム

41154110:2015/10/17(土) 02:03:41 ID:D7/F9.Uk
>>4112
i wanna be marchenの所ですが、そうです1:20前後の部分です。

ビュー分けについては教えて頂いた所を見た限りではチンプンカンプンですが、
これをヒントに色々試してみたいと思います。
また詰まったらお願いします。ありがとうございました。

4116名無しさん:2015/10/19(月) 01:40:30 ID:ICJT.iQQ
調べてもわからなかったので質問させてください
部屋の中に5体ボスがいて、5体全員倒すとボスアイテムが現れる設定にしたいのですが
ボスアイテム内の、ステップイベントのinstance_exists();このカッコ内に何と書けばいいのでしょうか
いろいろ試してみたのですが全員倒してもボスアイテムが現れてくれません

4117名無しさん:2015/10/19(月) 21:53:15 ID:gikvcf3Y
すみません、キッド君の銃を↓でも撃てるようにする方法を教えてください。

4118名無しさん:2015/10/19(月) 23:06:14 ID:c1e0K7Uw
ルーム全体が縦に長いのをつくりました
プレイヤーの位置に応じて縦にスクロールするようにする為にはどうすればいいのでしょうか

4119pokepure:2015/10/20(火) 00:16:34 ID:uSXSRZx6
>>4117
その分から分かる範囲内のことだけ、教えます。

playerオブジェクトのstepイベントに

if(frozen == false){
//プレイヤーの攻撃
if(keyboard_check_pressed(global.button4)){
playerShoot();
}
↑見たいなコードがある場所があるはずです。
(global.button4となっていますがエンジンによって異なります。ここではzキーを押したのと同義としています。)
これを

if(frozen == false){
//プレイヤーの攻撃
if(keyboard_check_pressed(global.button4)||keyboard_check_pressed(vk_down)){
playerShoot();
}

とするだけです。
(↓キーを押してもplayerの向いているx方向に玉が飛ぶ。)

4120名無しさん:2015/10/20(火) 11:39:28 ID:FFfdwPmk
>>4116
全ボスの変数が1のときアイテムを生成すればいいのではないでしょうか?
instance_existsを使うのでしたら()内に全ボス名を書いて生成するようにしてあげればできます。

スレ内に答えはあるのでCtrl+Fでキーワードを入力して調べましょう。

4121名無しさん:2015/10/20(火) 13:54:04 ID:4Vl/VcjQ
>>4118
ムーゲエンジンというエンジンの中に、スクロールするカメラが入っているので
参考にしてみてはどうでしょうか。

4122名無しさん:2015/10/20(火) 20:18:48 ID:c1e0K7Uw
>>4121
ムーゲエンジンのカメラの中身見てみたんですが何も書かれてませんでした

4123名無しさん:2015/10/20(火) 21:01:46 ID:4Vl/VcjQ
>>4122
worldという名前のオブジェクトの中身を見てください。
ルームイベントとステップイベントに何か書かれているはずです。

4124名無しさん:2015/10/25(日) 00:58:03 ID:z4eksiDg
つたでジャンプすると
そのままキッドく運が硬直して上に登って行ってしまいます。
いきなりそうなってしまいました。原因がどうしてもわからないです><
ツタを管理してるオブジェクトを見たのですがおかしいところはありませんでした。

4125名無しさん:2015/10/26(月) 08:10:25 ID:KI8BQx8I
トリガーに触れると32x32の針が32x96の大きさまで伸びて止まったりそのまま飛んで行く作り方を教えて下さい。

4126名無しさん:2015/10/26(月) 20:34:51 ID:nz.Agw3s
耐久についての質問です。
I wanna be Assaulted である橙ゲノム耐久中の序盤であるような、
丸の形を保持しながら、上下に移動したり回転したりしながら花火を出すというのはどうしたらいいでしょうか。

4127名無しさん:2015/10/27(火) 16:58:21 ID:qL.GV51Y
>>4126
回転の中心座標をStepイベントで毎ステップ定義すればいいです。
回転の中心座標をrx,ryとするならば、上下させるオブジェクトを用意して、回転するオブジェクトのStepイベントに

rx = "上下させるオブジェクトのオブジェクト名".x
ry = "上下させるオブジェクトのオブジェクト名".y

でどうでしょうか。

4128名無しさん:2015/10/28(水) 18:34:17 ID:D7/F9.Uk
耐久で使用される、画面1個→4個→16個→64個のやり方を教えてください

4129名無しさん:2015/10/29(木) 21:29:33 ID:ac6AqK1U
耐久で、タイムラインとそこの部分の音楽を好きな所から始める方法はないですか?

4130名無しさん:2015/10/30(金) 03:42:46 ID:KI8BQx8I
>>4125
まず専用のトリガーと針を作ります。
トリガー= trigger_a 針= spike_aとします。

trigger_aのplayerとのコリジョンイベントに

with(spike_a)alarm[0]=1
instance_destroy()

spike_aのアラーム0イベントに
//1ステップ後に針を0.01ずつ伸ばす
alarm[0]=1
image_xscale += 0.01 //伸ばす速度を変えたいときはここを変える

ステップイベントに
if(position_meeting(止めたい座標x,止めたい座標y,other)=true){
alarm[0]=false
}

これでできると思います。

4131名無しさん:2015/10/30(金) 03:49:56 ID:KI8BQx8I
>>4130
自分なりのやり方で作れたので書いておきました。

4132名無しさん:2015/10/30(金) 22:44:29 ID:nz.Agw3s
>>4127 さん
返答ありがとうございます!
参考にしながら色々試してみた結果、理想に近いものになりました。
ありがとうございました!

4133名無しさん:2015/11/01(日) 19:51:18 ID:WDvgkZOw
stepイベントに
if(ugoku=0){
if(global.trigger[trg]=1){
alarm[0]=1
}
}
としてプレイヤーがトリガーに触れた時に
アラームイベントを瞬間的に実行したいのですが、
この場合ですとプレイヤーが触れた瞬間
ずっと1フレームごとにアラームを実行してしまうので
トリガーに触れた瞬間一回だけアラームを実行したいのですが、
どうすればよいですか?
既出でしたらすみません。

4134名無しさん:2015/11/01(日) 23:27:29 ID:z4eksiDg
>>4133
既出だと思ったらキーワード検索しようね・・・

4135名無しさん:2015/11/02(月) 07:12:19 ID:WDvgkZOw
>>4134
一応検索はしたのですが、私の検索する技術がないのか、
見つからなかったので…
誤解を生む発言ですみませんでした…
教えてくれるか、ここにあるじゃないか、というご指摘
くださると嬉しいです。

4136名無しさん:2015/11/02(月) 11:11:48 ID:zjpwxOGU
横レスすみません。
>>4134
あのさ、そういう脊髄反射やめよう。
「既出でしたらすみません」っていうのは、「既出だと思ってる」という意味じゃないよ。
「自分が気づいてないだけかもしれないので、もしそうだったらすみません」っていう意味だよね。普通そういう風に使う定型文句なんじゃないの。

4137名無しさん:2015/11/02(月) 12:36:32 ID:FFfdwPmk
>>4133
stepイベントにinstance_destroy()を追加してトリガーを消せばいいんじゃないでしょうか?
消したままにしたくなければアラームを追加してinstance_create(x,y,オブジェクト名)で生成してあげるとか。

4138名無しさん:2015/11/02(月) 21:00:47 ID:bp5PiC0g
みなさんがどのようにトリガーを使っているのか教えてください
(針を飛ばす など)

現在エンジンを作っていて
トリガーの部分の設計に間違いがないか というのを調べるためです

(公開するかわかりませんが・・・・・)

もしよろしければご協力をお願いします

(今公開されているアイワナを見ればいいような気がしますが
個人的にこっちで直接聞くほうが速いのでは? と思い質問させていただきました)

4139名無しさん:2015/11/02(月) 21:16:03 ID:gikvcf3Y
書くとこ間違えたのでもう一度。

アイワナで簡易的な音ゲーを作ろうとおもうのですが、

・置くだけで設定したスピードにで右に行くオブジェクト
・↑ので撃つとブロックが消えるコード

を教えてください。
初心者なので大目に見てやってください…

4140名無しさん:2015/11/03(火) 00:32:52 ID:bp5PiC0g
>>4139
直接質問とは関係ないですが
音ゲーを作るうえでまず知ってもらいたい(やってもらいたい)ことが


1.必ず毎回1フレーム内で全ての処理が終わるようにして下さい

これが出来ないのは論外です これが出来ないと音ズレが発生します
重い処理を出来るだけ控えること
point_distance() sqrt()など

因みに50フレームなので1フレーム0.02秒内で処理します
ほぼ無いと思いますが場合によっては計算をif文無しで処理しないといけません



2.テストプレイは性能の低いPCでもすること

作っているPCの環境で音ズレが発生しなくても
古いPCだと音ズレが発生する恐れがあります
必ずやるべきことです

41414140:2015/11/03(火) 00:42:07 ID:bp5PiC0g
>>4140の続き

といっても正直あんまり気にする必要はないと思います
音ズレが発生した場合は
そのルームで一番多用しているオブジェクトのコードを
提示して貰えればと思います

4142名無しさん:2015/11/03(火) 00:56:37 ID:bp5PiC0g
>>4139
まず右に行くコードですが
これはルームに置き CreationCodeにて
vspeed = 2などと書けばスピードを設定できます

因みにvspeedは縦方向に動きます
横方向を表す変数は自力で見つけてみてください

ヒント:vspeed → vertical speed
横方向を表す英単語は


撃つと消えるようにするには
弾オブジェクトに当たった時ですのでコリジョンを使います

コリジョンの中身ですが

インスタンスを破壊(削除)します
関数名はすぐ↑の行にヒントがあります

4143名無しさん:2015/11/03(火) 10:20:51 ID:k9zlPcDI
>>4133
alaram[0]=1の次の行にugoku=1と入力すればいいと思います
トリガーに触れた瞬間に変数ugokuが1になることで
それ以降は条件を満たさなくなりアラームイベントが実行されなくなります

>>4138
ねころん式のトリガー(グローバル変数を利用したもの)を使っていて
プレイヤーがトリガーに触れたときやスイッチを押したときに
針やブロックを動かすといった使い方をしています
よくある使い方ですがそれ以外の使い方は思いつきませんでした...

4144名無しさん:2015/11/04(水) 16:07:31 ID:qlRfvW9A
GameMaker 8.0 Liteを使っています。
プレイヤーの死亡回数で生成するオブジェクトを変化させるコードってありますか?
例えば死亡回数が1000回未満だったらobjectAを生成し、1000回以上だったらobjectBを生成する、
といった感じです。

4145名無しさん:2015/11/04(水) 18:09:52 ID:gikvcf3Y
>>4140 ~ >>4142

長文にわたって解説ありがとうございます
hspeedですよね?
あと、そのオブジェクトが壊された時に特定のブロックが無くなるコード(そのブロックも)もよろしければ教えてください。

4146名無しさん:2015/11/04(水) 23:11:54 ID:gikvcf3Y
>>4140 ~ >>4142
すみません、ブロックオブジェクトを貫通し、bulletに当たって一発で無くなり、触ると死ぬようにしたのですか…

Create

テキスト:hspeed = -2

Collision Bullet

ゴミ箱のアイコンでself、other

(Parent:Kill Player)

の3つで作りましたが、何故か弾があたりません。

何か確実に弾が当たるコードはあるでしょうか?

4147名無しさん:2015/11/05(木) 15:37:35 ID:Y4PMAgzM
>>4144
そういうGMLはありませんが
If 文(とelse文)、global.deathを用いることで可能です。
If(global.death>==1000){instance_create(x,y,object名)}
else{instance_create(x,y,object名)}
みたいな感じです。

これを書いている今、実際に検証しながら書き込んでいるわけではないので間違いがあると思います。
ただ、大体こんな感じでできると思います。

4148名無しさん:2015/11/05(木) 22:39:13 ID:gikvcf3Y
>>4146
すみません、自己解決しました

4149名無しさん:2015/11/07(土) 16:39:24 ID:WDvgkZOw
常にhspeed=5の
敵がいるとします。
で、その敵がboundっていうobjectによって常に反復しているとします。
そして、playerが近づいたらhspeed=10になるそして、
離れたらhspeed=5に戻るみたいなのを作りたいのですが
なかなか思いつきません。どのようにすればいいか教えてください。

if(player.x-128 < x < player.x+128){hspeed=10}else{hspeed=5}

という風に作ると敵がスピードを上げるのですがバウンドしません。
これ以外にもいい方法あれば教えてください

4150名無しさん:2015/11/07(土) 17:52:07 ID:bp5PiC0g
>>4149

これ自分もやって目茶苦茶悩んだ時期があります・・・・・

if (player.x-128 < x < player.x+128)

この書き方はGMLでは ”NG” です(こんな風に書ける言語も存在します)

if (player.x - 128 < x && x < player.x + 128)

正直YoYoGamesさんにはこういう風に書いたら
syntax error(書き方が間違っていると出るエラー)を出して欲しいですよね・・・・・

4151名無しさん:2015/11/07(土) 18:06:38 ID:bp5PiC0g
>>4150の補足
因みに

if (player.x - 128 < x && x < player.x + 128)は

abs()を使うことで少しばかり短くすることができます

余力があれば挑戦してみてください

4152名無しさん:2015/11/07(土) 20:20:50 ID:k9zlPcDI
>>4149
そのコードはstepイベントに書いたんですよね?
hspeed=10のような書き方だとバウンドするときにhspeedをマイナスの値にして
左に方向転換させようとしてもstepイベントで上書きされてしまうので右にしか移動しません
なので以下のように変数を使ってstepイベントでhspeedの値を制御するといいです

if(player.x - 128 < x && x < player.x + 128){
hspeed = hspd * 2;
}else{
hspeed = hspd;
}

あとはバウンドするときにhspdの正負を反転させるようにし
creation codeやcreateイベントでhspdの値を指定すれば完成です
これ以外にもhspeedではなくspeedで速さを指定するといった方法があるので試してみてください

4153名無しさん:2015/11/08(日) 11:42:31 ID:WDvgkZOw
>>4150さん >>4151さん >>4152さん
ありがとうございました!
ロックマンのガヒョールのようなものを作りたかったのですが
上記のプログラムに追加して見事作ることができました!
gamemakerではの書き方には気を付けていきたいと思います。
詳しい解説にわかりやすい例を提示してくださりありがとうございました!

4154名無しさん:2015/11/22(日) 17:21:47 ID:JURJjlOA
FATAL ERROR in
action number 1
of Step Event
for object BOSSRED:

COMPILATION ERROR in code action
Error in code at line 1:
if(x>player,x){
^
at position 12: Symbol ) expected.

というエラーが出てテストプレイができなくなってしまいました
解決方法も色々試しましたがわかりません
解決方法を教えてくださいお願いします

4155名無しさん:2015/11/22(日) 17:23:11 ID:JURJjlOA
FATAL ERROR in
action number 1
of Step Event
for object BOSSRED:

COMPILATION ERROR in code action
Error in code at line 1:
if(x>player,x){
^
at position 12: Symbol ) expected.

というエラーが出てテストプレイができなくなってしまいました
解決方法も色々試しましたがわかりません
解決方法を教えてくださいお願いします

4156名無しさん:2015/11/22(日) 17:28:37 ID:JURJjlOA
4155です、^ が付いているのはplayerのrの下でした。
それと二回同じ書き込みをして申し訳ありませんでした

4157名無しさん:2015/11/22(日) 18:11:20 ID:uSXSRZx6
>>4156
そのエラー内容から見て分かることです。

BOSSREDというオブジェクトの
コードの上の方にある、"if(x>player,x){"の場所が違うよ。
という内容です。

playerオブジェクトの座標を表したい時は、player,xではなく、player.xです。
キーボードの位置が隣なので間違えることは分かりますがね・・・w

4158名無しさん:2015/11/22(日) 19:20:42 ID:JURJjlOA
>>4157さん
ありがとうございました!
おかげで解決しました!

4159名無しさん:2015/11/23(月) 14:43:45 ID:JURJjlOA
ボスを倒してアイテムを取ると出現するワープを作りました。
最初は見えず、当たり判定であるMaskも何もないスプライトです。
アイテムを取るとワープが見えてMaskもワープのスプライトになるようにしたのですが
当たり判定がありません。どうすればいいでしょうか?

4160名無しさん:2015/11/29(日) 13:15:30 ID:URa6gYjY
Fangameのように、
The Kidが2人いてちょうど上下左右逆になっているような仕組みを作ったのですが、
Maskの判定がどうもおかしく、時々別行動をとってしまう場合があります。
Maskの設定はどのようにすればよいのでしょうか?

4161名無しさん:2015/12/01(火) 19:03:09 ID:WDvgkZOw
マリオのゲームとかでよくある
踏んだらカウントダウンが始まり時間になったら
爆発するというものを作りたいのですが
コードが長くなってしまいobjectもたくさん作ればできたのですが、
ゲーム自体に負荷がかかる可能性があるので、
簡単にobjectも1個だけで済む方法はありませんか
ご教授お願いいたします。

4162名無しさん:2015/12/02(水) 15:59:30 ID:VDCVRMyg
>>4159
このように作るのはどうでしょうか

frag = true になった場合
ワープを生成するオブジェクト

もう少しエンジンを考慮した言い方をしますと

グローバルのアイテム変数が 1(true)になった場合
ワープを生成するオブジェクト

になります

ワープをした後すぐにその生成するオブジェクトをDestroyすると
何回も生成されなくなります

4163名無しさん:2015/12/02(水) 16:04:43 ID:VDCVRMyg
>>4160
Maskに関しては
反転したplayerには専用のやつがあるはずなので
それで問題ないと思うのですけど・・・・・

とりあえずもう一度確認してみてください

4164名無しさん:2015/12/02(水) 17:01:07 ID:VDCVRMyg
>>4161
何もObject1つだけで作る必要なんてないと思います
個人的にはそれよりも機能ごとに作るべきだと思っています
例えば

<踏んだらカウントダウンが始まり・・・・・>

まず「踏んだら何か起きる」で1つの機能として纏められそうです

踏んだらドアが開くスイッチ
踏んだら死ぬ敵
踏んだら高く飛べるバネブロック

などです

親オブジェクトを作り
Collisionイベントで踏んだか見て 判定が出たらfragなどをtrueにする
などといった動作を作ります

このように作っていきます

もし結局 親オブジェクトを1つのオブジェクトしか使わなくても
特に処理的には問題はないと思います
なのでオブジェクトが多くなっても
このように機能ごとに纏めるべきです


爆発も他のところで使えそうなので 1つのオブジェクトとして作ります

最終的にこのような構成になるのではないかと思います

Object
| 踏んだかどうかを判定するオブジェクト(親オブジェクト)
| |-カウントダウンをするオブジェクト(子オブジェクト)
| 爆発エフェクトのオブジェクト


処理に関してですが
どこが気になるのかなど教えてもらえれば
分かる範囲で教えようと思います
(コードを乗せてもらえると嬉しいです)

4165名無しさん:2015/12/05(土) 19:02:26 ID:EV4EwXcc
質問です

ゆううつエディションのbossitem2が何故か死んでから現れるようになりました。
bossitem1は普通に見え、コードもスプライト以外触っていません。

そうならないようにするにはどうすればいいでしょうか?

4166名無しさん:2015/12/06(日) 01:25:10 ID:h/vUdKnM
すみません、
ルームAで針を飛ばす→ルームAから出る→もう一度ルームAに入る
(※ここまでをリプレイせずに行う)
このような行動をすると、最初にルームAで飛ばした針が、
2回目でルームAに入った瞬間飛んでしまいます。
(リプレイをすると、リプレイ以前に飛んだ針は飛びません)
恐らくグローバルの設定がルームから出ても残っていると思うのですが、
2回目でルームAに入った時に針が飛ぶのを防ぎたいです。
どうすればよろしいでしょうか…
Poronium Editionです

4167名無しさん:2015/12/06(日) 22:20:18 ID:EV4EwXcc
I Wanna Kill The Kamilia 3のBETTY AREAのようなバックで斜め上に同じオブジェクトを流し続けるのはどうすればようでしょうか?

4168名無しさん:2015/12/07(月) 12:57:15 ID:JURJjlOA
>>4162さん、ありがとうございました!

4169名無しさん:2015/12/09(水) 07:11:44 ID:k9zlPcDI
>>4166
roomChangerのイベントにコードを付け足して
ルームを移動する際に特定の番号のglobal.triggerがfalseになるようにすればいいです。
例えばglobal.trigger[trg] = falseと入力すれば番号trgのトリガーが初期化されます。
ただ これだと1つ1つのwarpオブジェクトにtrgの値を設定しないといけないので
for文を使って一度に大量のトリガーを初期化させるといいです。

4170名無しさん:2015/12/09(水) 22:14:46 ID:WDvgkZOw
>>4164
返答ありがとうございます。
自分なりにしっかりと構成をかいてみることで
自分の作りたいものができました。しっかりとこれから紙に書いて
頭だけで考えず書き出そうと思いました。

そして、その中で、カウントダウンを数えるたびにアラームを鳴らす
といったものを作る際に困ってしまったので質問させていただきます。

私はカウントダウンの3,2,1,0と一つのアニメーションとして
作りプレイヤーがスイッチを踏んだらアニメーションを起動しアニメーションが
終了したら爆発エフェクトを生成するという方法で作りました。

カウントダウンするオブジェクトにstepで
if(image_index=1){sound_play(sndalarm)}
とすると音がブrrrrrrrrrrrrrrrってなってしまい

別の方法を考え スイッチobjectのstepイベントに
if(global.collide = 1)//collideは物体に触れているとき
{alarm[0]=25}//アラーム0にはsound_play(sndalarm)を記述している

とするとkidくんが触れなくなった際に音が鳴り始めてしまいます。

わかりずらいかもしれませんがいろいろと考えた結果がこれですので
解決方法もしくはアドバイスをいただけると嬉しいです。
長文失礼いたしました。

4171名無しさん:2015/12/09(水) 23:31:35 ID:nz.Agw3s

Not another needle gameで上に出てくる、メッセージウィンドウを出し、文章を順々に出すようにはどうしたらいいでしょうか?

4172名無しさん:2015/12/10(木) 18:22:03 ID:h/vUdKnM
>>4169
4166です。for文が難しかったので結局Room creation codeにrepeat文を打ち込む事にしましたが、
それに至るまでの参考とさせていただきました。ありがとうございました!

4173名無しさん:2015/12/13(日) 04:00:21 ID:ICJT.iQQ
リフトにニセブロックと当たると反射する設定をしたのですが跳ね返ってくれません。
このリフトはプレイヤーがトリガーに触れると、トリガーでvspeedがついて上に動くように設定していて、
ニセブロックとの衝突イベントでリバースなんたらという矢印のコマンドを入れてます。
コードはいじってないので何が原因かさっぱりです。
ゆううつエディションを使ってます。

4174名無しさん:2015/12/13(日) 04:03:40 ID:ICJT.iQQ
>>4173の追記です
ニセブロックをすり抜けた後、通常のブロックやすり抜けた後に上から当たった場合はしっかりと反射します。
ニセブロックと下から当たった時のみ跳ね返ってくれません。

4175名無しさん:2015/12/13(日) 19:08:11 ID:1UDvbtBM
Gamemaker Studioi(StandardEdition(無料))
で作られたアイワナで、
音楽がまったく鳴らない場合や、
効果音は鳴るがBGMが鳴らない場合等があるようですが、
製作側で何か修正するべきところがあるでしょうか?

また、プレイヤー側で環境を整えてもらう必要があるのでしょうか?

もちろん、効果音もBGMも両方鳴る場合もあるようです。

4176名無しさん:2015/12/14(月) 00:18:27 ID:FDE4rjos
>>4173
>>4174
う〜む
どうやらこれはエンジン自体のバグのようですね。
このリフトは下に下がっているときは、vspeedに値が入っていますが、上に行っているときはvspeedがマイナスではなくゼロになり
stepイベントにて"yspeed"という変数の大きさだけy座標を瞬間移動させているようです。もともとの"Reverse vertical direction"はvspeedに-1をかけるのと同じ処理をしているわけですから上に行っているときのvspeedゼロに-1をかけてもゼロですよね。だから跳ね返ってくれなかったわけです。
原因は分かったものの、対策が分からず試行錯誤していると"Reverse vertical direction"の方を消して代わりに
/*ここから*/
if (y<yprevious) {
vspeed=yspeed;
yspeed=0;
vspeed *=-1
}

if (y>yprevious) {
yspeed=vspeed;
vspeed=0;
yspeed *=-1
y = yprevious//ここにこれがないとなぜかリフトがniseblockにめりこむ。
}
/*ここまで*/
をコピペしてやるとうまくいくようです。
なぜこのコードでうまくいくのかは私自身よく分かっておりませんw
なるものはなる、ということで参考になれば幸いです。

4177名無しさん:2015/12/14(月) 00:47:02 ID:ICJT.iQQ
>>4176
いただいたコードをコピペして入れてみたところ、うまく跳ね返ってくれました!
返信ありがとうございましたm(_ _)m

4178名無しさん:2015/12/14(月) 18:03:04 ID:tM.aZo3k
>>4170
とりあえずなんでうまくいかないかを

if(image_index=1){sound_play(sndalarm)}

これに関してはどんな感じにスプライトの設定しているのか分からないので割愛します



if(global.collide = 1)
{alarm[0]=25}

これは触れているとalarmの数値がずっと25のままになります
なので触れている間は一向に数値が減らないので鳴りません

数値を1回だけ設定するように変更すればいいのです

4179名無しさん:2015/12/15(火) 12:41:01 ID:H/suQaXA
n角形弾幕の作り方を教えてください

4180名無しさん:2015/12/18(金) 20:00:14 ID:ZtJ/cC0M
>>4179

手順

1.
n角形の頂点座標を三角関数で求める
(ここまでは円弾幕を作るのと同じ手順)

2.
求めた頂点座標を使い
線形補間をする

nx → 手順1で求めた頂点座標

lerp(nx[0], nx[1], 0.5)
lerp(nx[0], nx[1], 0.5)

↑ので1つ目の座標と2つ目の座標の中間点が出る
(0.25でやると3:1の位置に出てきます)

proじゃない方はlerpが使えない
以下のコード(スクリプトに作成)を用いるとできる

///lite_lerp(start, end, t)
s = argument0;
e = argument1;
t = argument2;

return s + t * (e - s);

3.
オブジェクト生成

手順1と手順2の計算途中に入れても良い


Tips:
手順1で求めた頂点座標を手順2で

lerp(nx[0], nx[2], 0.5)
lerp(nx[0], nx[2], 0.5)

と1つ飛ばしに線形補間をすると
n芒星ができる

(一応手順1であることをすると
真ん中の線無しバージョンも作れる
余力があれば挑戦してみてくれ)

41814180:2015/12/18(金) 23:09:13 ID:bp5PiC0g
訂正
lerp(nx[0], nx[1], 0.5);
lerp(nx[0], nx[1], 0.5);



lerp(nx[0], nx[1], 0.5);
lerp(ny[0], ny[1], 0.5);

4182名無しさん:2015/12/19(土) 07:17:07 ID:W9Wtptuw
質問です!i wanna classicのtime travelステージのように、過去のプレイヤーと同じ動きをするオブジェクトはどうやったら作れますか?

4183名無しさん:2015/12/21(月) 16:48:36 ID:.6O5qB0w
fungameやDAREJARのように、ロード画面でスクリーンショットをファイルから読み込んで表示させるにはどのようにすればよいのでしょうか?

4184名無しさん:2015/12/21(月) 22:12:23 ID:KQkbQ.wg
ゲームのウィンドウの上の部分のファイル名(ゲーム 名)を変えるにはゲームメーカーでどこを設定すれば いいのでしょうか。使用エンジンは「i wanna be the engine poroniumu edition ver.2.2」です。

4185名無しさん:2015/12/23(水) 09:06:48 ID:UvgOHxUs
>>4184
「Objects」→「Player_etc」フォルダの
「world」オブジェクトの
「Room Start」イベントの
room_caption="i wanna be the engine poroniumu edition ver2.2";
の所を変更すれば変わると思います。

4186名無しさん:2015/12/23(水) 15:47:33 ID:hI3RFiXc
エンジンはyuutu 最新
ゲームメーカーは8.1full
Supersound v1を使ってoggを再生しようとしていますが再生ができ
ません。コードはこんな感じです。
stageBGM =SS_LoadSound(working_directory+"\BGMs\001.ogg",true)
if (!SS_IsSoundPlaying(stageBGM)=1){
SS_SetSoundVol(stageBGM,10000)
SS_LoopSound(stageBGM);}

クリエイトでSS_Init()をしています

4187名無しさん:2015/12/23(水) 16:47:41 ID:KQkbQ.wg
>>4185
ありがとうございます!できました!

4188名無しさん:2015/12/26(土) 12:50:11 ID:hI3RFiXc
>>4186
自己解決しました

4189名無しさん:2015/12/28(月) 07:06:09 ID:.6O5qB0w
Studioが主流となった現在でも、8.0のProへのアップグレードは可能ですか?

4190名無しさん:2015/12/29(火) 15:17:15 ID:KQkbQ.wg
poroniumu editionで作ってテストプレイをしようとしたら必ずタイトル画面で
ERROR in
action number 1
of Create Event
for object titleButton:

Error reading byte.
というエラーが出てしまいます。どうやったら直りますか?

4191名無しさん:2015/12/29(火) 17:49:34 ID:CXie/K7c
アイワナ製作について質問します。
①ボスの攻撃パターンはどうすれば設定できますか?自機狙いにしか設定できないので教えてください。
②無限に円形拡散するりんごはどうすれば作れますか?1回しか拡散できないので教えてください。
③トゲをブロックの中に隠す方法を教えてください。

4192名無しさん:2015/12/29(火) 17:53:00 ID:CXie/K7c
>>4190
どこかでコードの入力をミスっているのだと思います。
コードを訂正するか、一回コード入力型のオブジェクトを消すとできると思います。

4193名無しさん:2015/12/29(火) 19:04:22 ID:CXie/K7c
追加で質問します。
④座標ワープを設定するとき、コードはどのような形で設定したらいいか教えてください。
warpXとwarpYを使う事しか知りません。

4194名無しさん:2015/12/30(水) 12:56:22 ID:KQkbQ.wg
>>4192
オブジェクトのコードをミスってました。ありがとうございます

4195名無しさん:2016/01/02(土) 09:09:30 ID:uSXSRZx6
>>4193
ここの掲示板の過去ログに既にあります。
>>2809です。

4196名無しさん:2016/01/04(月) 08:03:52 ID:CXie/K7c
銃を打つとゲームオーバーになる偽セーブはどうやって作るのですか?

4197名無しさん:2016/01/04(月) 12:27:11 ID:dHJnTvAI
1つのトリガーに「trg=1」と「trg=2」と2つコードを持たせたいのですが、どうも「trg=1」の方が優先されるようです
どうしたら2つとも発動できるのでしょうか

4198名無しさん:2016/01/04(月) 15:55:53 ID:uoFuTrgs
>>4196
bulletとのコリジョンイベントに
with(player)
{killPlayer()};

>>4197
>>2992に同じ質問があります

4199名無しさん:2016/01/04(月) 16:07:53 ID:CXie/K7c
>>4198
できました。ありがとうございます。

4200名無しさん:2016/01/05(火) 16:54:12 ID:dHJnTvAI
>>4198
ほんとだ
探す努力もなしに質問してすみませんでした。
そして、ありがとうございます。

4201名無しさん:2016/01/05(火) 20:29:03 ID:CXie/K7c
またわからないことがあったので質問します。
プレイヤーが乗ると動くリフトの作り方は過去レスにありました。
しかし、リフトの長さの変え方がわかりません。
誰か教えてください。

4202名無しさん:2016/01/05(火) 22:18:45 ID:uoFuTrgs
リフトの横幅のことですか?
それならroomでリフトのCreation Codeに
image_xscale=2;
と書けば新たにobjectやspriteをを作らずにリフトの横幅を2倍にできます
>>3に書いてあることを使えば出来るので質問する前に過去レスをよく参考してみてください

4203名無しさん:2016/01/06(水) 07:03:04 ID:CXie/K7c
>>4202
できました。
ありがとうございます。

4204名無しさん:2016/01/06(水) 07:11:20 ID:CXie/K7c
ジグザグに動くりんごと、一定時間触れるとGAMEOVERになるオブジェクトの作り方を教えてください。

4205名無しさん:2016/01/06(水) 16:44:06 ID:uoFuTrgs
>>4204
・ジグザグ

pathで動きを作る
もしくはalarmで方向を変える

・一定時間触れると死ぬ

Createに
with(player){hp=1000};//数字は調整してください

Stepに

with(player)
{
if(place_meeting(x,y,obj))//objにobject名を記入
{hp -=1}
else
{hp =1000}//ここの数字とCreateの数字は一緒の方がいいかと

if (hp <= 0){
killPlayer()}}

playerのほうにアレンジして記入しても出来ると思います。
一度このobjectから出ると死ぬまでの時間も戻ります。
それが気に入らないならelseの文を消してください。
テストプレイしていないのでおかしいところがあるかもしれませんが
だいたいこんな感じのコードでできると思います

4206名無しさん:2016/01/07(木) 18:19:52 ID:CXie/K7c
>>4205
すみません、できませんでした。

4207名無しさん:2016/01/07(木) 23:32:41 ID:uoFuTrgs
>>4206
一定時間触れると死ぬのほうですか?
テストプレイしてみたところ、複数配置したら
死ぬまでの秒数が縮まってしまったので
コードを変えてみました

Createに
with(player){hp=1000};

with(player)
{
if(collision_point(x,y,obj,true,false))
{hp -=1/5}
else
{hp =1000}

if (hp <= 0){
killPlayer()}}

objにこのコードを書いているobject名を記入してください
だいたい3秒くらいでgameoverになると思います
私の環境では動作したので、これでうまくいかないのなら
変数名が重複してると思うので「hp」の部分を別の変数名にしてください

4208名無しさん:2016/01/08(金) 21:52:07 ID:CXie/K7c
>>4207
できました。

4209名無しさん:2016/01/09(土) 10:51:53 ID:CXie/K7c
シルエットのルームはどうやって作るのですか?

4210名無しさん:2016/01/10(日) 09:24:49 ID:CXie/K7c
アイワナにあるラインを通ると○○というのはどうやって作るか教えてください。
例えば、ラインを通ると、
・プレイヤーのスピードが速くなる
・プレイヤーのジャンプ力が高くなる
・2段ジャンプができなくなる
などは、どのオブジェクトのイベントに、どんなコードを記述するといいか教えてください。

4211名無しさん:2016/01/10(日) 12:00:43 ID:tM.aZo3k
>>4209-4210
さすがに質問しすぎかなと思ったのでストップを掛けます

1つや2つぐらいであれば別にいいのですが
頼り過ぎるのもどうかと思います


例えば

質問します
来るかどうかは分かりませんが回答が来ます

ここでもし回答のプログラムにバグがあったらどうしますか?

すぐにバグを発見できればいいですが
完成間近に見つかったらどうでしょう

完成間近の場合だとどこのどのプログラムが間違っているのか
分かりにくくなっていきます

他人のプログラムなので(自分で理解して書いたものではないために)
一体なんて書いてあるのかが分からず結局解決しない


かなり後からバグが見つかることは普通にありますので
(自分も何度か経験しましたし)



さらに言えばここで回答されたプログラムが全てではありません
解法はいくつもあります
(実のところベストな解法を自力で出してもらうために
自分の回答は少しだけ遠回りなプログラムを出しています)

できれば自力でプログラムを作り
そしてコメントも書けたらどんどん書いていきましょう

4212名無しさん:2016/01/17(日) 20:20:10 ID:CXie/K7c
>>4211
自分はバグなどがあった場合、バックアップで復元しています。

4213名無しさん:2016/01/17(日) 20:29:31 ID:CXie/K7c
一回自分で試したらおかしかったので質問します。
ボスの第3形態までの攻撃パターンを設定しようとしています。
Createに
hp=3
nodamage=0
flag = 0
Alarm0に
if(nodamage=1){
visible = !visible
alarm[0]=8;
}
if(flag == 0){
d=instance_create(x,y,boundFruit3);
d.speed=4;
d.direction=point_direction(x,y,player.x,player.y);
alarm[0]=30;
}
if(flag == 1){
d=instance_create(x,y,boundFruit2);
d.speed=4;
d.direction=point_direction(x,y,player.x,player.y);
alarm[0]=50;
}
if(flag == 2){
d=instance_create(x,y,boundFruit);
d.speed=4;
d.direction=point_direction(x,y,player.x,player.y);
alarm[0]=60;
}
Araum1に
nodamage = 0
visible = 1
弾のcolisionイベントに
if(nodamage = 0){
hp -= 1
nodamage = 1
alarm[0] = 1
alarm[1] = 25
}
if(hP <= 2 && flag == 0){
flag=1;
}
if(hP <= 1 && flag == 1){
flag=2;
}
if(hp<=0){instance_destroy()};
を入れたのですが、攻撃パターンが変わらなかったり、攻撃をしてこなくなったりします。
どこがおかしいか教えてください。

4214名無しさん:2016/01/18(月) 22:36:19 ID:1Ae.knOA
>>4213
まず、hpが一部hPになっているのが間違いっぽいですね。大文字小文字は区別されるので統一させましょう。
またalarm[0]にてflagが0の時にboundFruit3が飛ぶように書いてありますが弾のcolisionイベントにてalarm[0]が発動すると同時に
(正確にはそれより1step前の段階で)flagが1に変更されているのでこの状態ではboundFruit3が飛ぶことはないですね。
createイベントに
alarm[0] = 1
を書き加えれば最初からboundFruit3が飛ぶ状態で始まるようになるでしょう。

4215名無しさん:2016/01/19(火) 21:08:04 ID:CXie/K7c
>>4214
ありがとうございます。
できました。
pをPとミスっていました。

4216名無しさん:2016/01/23(土) 15:13:42 ID:JURJjlOA
リンゴを四角や三角、星やハート型に飛ばすコードを教えてください
お願いします

4217名無しさん:2016/01/23(土) 23:37:24 ID:bp5PiC0g
>>4216

悪いですがコードは教えられません

「四角や三角」
多角形に関しては
>>4180で解説しています
もちろん四角や三角には対応しています

「星」
星に関しても
>>4180の補足で解説しています
多角形ができれば何も苦労せずできるはずです

ただし先端の角が丸いものを作る場合
>>4180では出来ません
他の方法を考えましょう
(方法はあるのですが省略)

「ハート」
ぶっちゃけ変形したりしないのであればPathを使ったほうが速いです

ハートの方程式でいくつかの式が出るはずなので
自力で媒介変数表示を それを使ってみるといいです

4218名無しさん:2016/01/24(日) 15:21:30 ID:CXie/K7c
>>4216
ハートについては、yahooでアイワナ作成ハートと検索し、アイワナメモの記事一覧を見ればわかります。

4219名無しさん:2016/01/25(月) 18:08:57 ID:oh.MMfUY
ゲーム全体を無限ジャンプにするには何処を書き換えればいいですか?

4220名無しさん:2016/01/25(月) 23:37:23 ID:ICJT.iQQ
>>4219
無限ジャンプは、プレイヤーの2段ジャンプが常に使える状態のことです
①プレイヤーの「2段目のジャンプをしたらジャンプできなくなる」という部分のコードを削除する
②外部のオブジェクトのステップイベントに常に2段ジャンプができる設定をする
などのやり方でできると思います

ちなみに自分はstepイベントにplayer.djump=trueと書いたオブジェクトを置くことで無限ジャンプできるようにしています
ゲーム中常にできるようにしたいならworldというオブジェクトのステップイベントに書くとできると思います(試してないですが)

4221風月(ふづき):2016/01/26(火) 01:17:24 ID:iWIocurE
キッド君が反転したあとスピードアップさせて、それをもとのスピードに戻すとジャンプが出なくなります、原因がわかりません
ちなみに、普通の状態でスピードアップさせて、戻したときは普通にジャンプできます

4222名無しさん:2016/01/26(火) 02:33:05 ID:ICJT.iQQ
その反転させてスピードアップというのは上下に反転させて、ということでしょうか?
ゆううつエディションの仕様ですが、プレイヤーを反転させるとplayer2というオブジェクトを生成しもとのplayerを削除します
これ↓
if(global.grav=0){
global.image_xscale=image_xscale
instance_create(x,y+4,player)
instance_destroy()
}
そしてplayer2がジャンプするときは下のように計算されています
vspeed = -jump (scriptのplayerJumpの中身)
jump = -8.5 (player2のcreateイベント)

どのようにスピードアップ、元に戻す処理をしているかわからないのでここまでしか言えませんが、おそらく
ジャンプする際のvspeedが反転状態でも+になっていることでジャンプできないのだと思います。

4223名無しさん:2016/01/26(火) 02:44:15 ID:ICJT.iQQ
>>4222
ミス
vspeedが反転状態でも+になっている→反転状態でも-になっている

4224名無しさん:2016/02/10(水) 00:47:35 ID:W5tZffCI
質問です。
林檎(utiage)から16方向の林檎(hati)を出そうとしてるのですが、上手くいきません。
何かコードに問題があるでしょうか?
教えてくれたら嬉しいです
repeat(16){
eee = instance_create(utiage.x,utiage.y,hati)
eee.speed=10
eee.direction+=360/16
}

4225名無しさん:2016/02/10(水) 01:01:53 ID:W5tZffCI
>>4224
自己解決しました

4226名無しさん:2016/02/11(木) 16:45:16 ID:V6woYSmI
たまに耐久にある模擬3Dみたいなのはどうやったら作れますか?

4227名無しさん:2016/02/11(木) 17:54:10 ID:bp5PiC0g
>>4226

基本的にはdepthとscaleをz座標と見立ててやっていきます
なので3Dのプログラムをやっているのと同じだと思ってください



●3Dプログラムについて

普通一般的な3Dゲームのプログラムは4行4列の行列を使います
(なので行列が分からないと厳しいです)

X軸回転
1 0 0 0
0 cosθ sinθ 0
0 -sinθ cosθ 0
0 0 0 1

Y軸回転とZ軸回転省略

スケール
Sx 0 0 0
0 Sy 0 0
0 0 Sz 0
0 0 0 1

ポジション
1 0 0 0
0 1 0 0
0 0 1 0
x y z 0

この上の行列を掛けて1つの行列にします
(回転→スケール→ポジションの順)

そうして位置を変更したい座標に上の1つにまとめた行列をかけると
うまく3Dの回転や移動、拡大などができます

あとはdepthが0以下になったら描画させないなど
やってあげればいいだけですね



と書きましたがおそらくほとんどの人は
sinやcosを使いどうにかして3Dっぽく見せている人が多いと思います

4228名無しさん:2016/02/12(金) 11:34:08 ID:58vK/bRw
アイワナの起動ファイルのアイコンを変えようとしたのですが、エクスプローラの表示形式を変えると元の赤い丸に戻ってしまいます。
どうすれば表示形式変えてもアイコンが戻らないようになるんでしょうか?

4229名無しさん:2016/02/12(金) 20:48:26 ID:W5tZffCI
耐久を作ってて質問なんですけど、TimeLine実行中にとある箇所で急にFPSが落ちます(50→45前後)
音ズレも酷いしなんとかして改善したいのですが、原因がイマイチ分かりません。
重くなる箇所で実行しているのは、林檎を3個作り、そこから8方位〜15方位の弾をそれぞれ出し、その処理を数回行うという事なのですが...
原因がさっぱり分からず、GameMaker根本のバグなのか、それともコードの書き方が悪いのか謎です。
コードを貼るので、原因が分かる人がいましたらもしよろしければ教えてくれませんか?

林檎生成の処理は
aaaa=instance_create(200,100,kagami1)
をそれぞれ行い、放出の方は、
xx=8
repeat(xx){
kakaka=instance_create(kagami1.x,kagami1.y,object836)
kakaka.speed=10
kakaka.direction=dir
dir+=360/xx
}

yy=15
repeat(yy){
sasa=instance_create(kagami2.x,kagami2.y,object836)
sasa.speed=10
sasa.direction=dir
dir+=360/yy
}

zz=12
repeat(zz){
nanana=instance_create(kagami3.x,kagami3.y,object836)
nanana.speed=10
nanana.direction=dir
dir+=360/zz
}

としています。
長文になってしまいましたが、よろしくお願いします!

4230名無しさん:2016/02/12(金) 23:30:54 ID:bp5PiC0g
>>4229
う〜ん・・・・・ちょっとそこまで重い処理ではなさそうに見えるんですけどね・・・・・

一応
xx=8
repeat(xx){
kakaka=instance_create(kagami1.x,kagami1.y,object836)
kakaka.speed=10
kakaka.direction=dir
dir+=360/xx
}
の部分を最適化してみます

360/xxが計算の無駄です
毎回割り算をして数値を求めているからです
ループに入る前にやってみると少し速くなります
(といっても処理時間は本当にほんのちょっぴりしか変わらないです)

xx=8;
dir = 0;
_dir = 360/xx;(名前の最初にアンダーバーがついています)
repeat(xx)
{
kakaka=instance_create(kagami1.x,kagami1.y,object836)
kakaka.speed=10;
kakaka.direction=dir;
dir+=_dir;
}

とこれぐらいしか変えることがありません
これを変えただけでどう考えても改善すると思いません


1つrepeatを使わないでfor文で書いてみる方法もあると思います

xx = 8;
_dir = 360/xx;
for(dir = 0; dir <= 360; dir += _dir)
{
kakaka=instance_create(kagami1.x,kagami1.y,object836)
kakaka.speed=10;
kakaka.direction=dir;
}

どっちみち変わんないですね



じゃあ重いのってなんだって話

まずsqrtは重たいです 避けましょう
そして前にも書いたのですがpoint_distanceはsqrtを使うので重たいです

理由は二点間の距離の公式を思い出して貰えば分かりますが
その過程で平方根を使っているからです

なのでpoint_distaceの利用は気を付けてください

大分長くなってしまったのでここらへんで

4231名無しさん:2016/02/13(土) 00:40:00 ID:W5tZffCI
>>4230
ありがとうございます
試してみたらラグも無く動いたのですが、よくよく考えてみたらしばらくの間PCをシャットダウンしていずにぶっ通しで作業していたので、winの謎機能メモリ圧縮か何かによってGameMakerをクッソ重くさせられていたのが原因ではないかと思い、さっきのコード復元したらラグ無しで動いたので間違いないでしょう。
ともあれ、効率の良い事に越したことはないので、大いに活用させていただきます。
そしてこまめな再起動を心がけますw

4232名無しさん:2016/02/13(土) 08:17:09 ID:CXie/K7c
アイワナを同じエンジンで複数作ることは可能なのでしょうか?
試しにやるとエラー画面が出てしまいます。
どうすればいいでしょうか。

4233名無しさん:2016/02/13(土) 09:12:58 ID:V6woYSmI
>>4227 よくわかりませんでした・・・行列の計算をgamemakerにさせることはできるのでしょうか

4234名無しさん:2016/02/13(土) 10:59:28 ID:qwAE.jkM
作った効果音をgamemakerにとりこむと何故か音がならなくなる
既存の効果音はちゃんとなるのに
エラーメッセージもないし何でかわかる人いますか

4235名無しさん:2016/02/13(土) 19:53:46 ID:bp5PiC0g
>>4233 
残念ながら行列の機能がありません
なので自分で機能を作るか dll頼りになります

Xematrixというものがありました
おそらくこれを使うしかありません

さっと見た限りですと
ちょっと初心者にはきついかもしれません

使い終わったらメモリ解放などもしないといけないようですね・・・・・

自分も使ったことが無いですが
もしわからないことがあったら質問してください

参考資料として とりあえず円の回転を書いてみる
(さっと見ただけ&直接ここに書いているので使い方が合っているのかは分からないので確認してみてください)

[Create]
XeLibInit('XeMatrix.dll') //ゲームスタートしたときに呼ぶといいかもしれません

rep = 8;
rotX = 0;
c = 0;
mat = XeMatrixCreate();
pos = XeVectorCreate();

dir = 0
_dir = degrorad(360/rep);
for(i = 0; dir < pi * 2; i+=1)
{
cx = cos(i)*100 + room_width/2;
cy = sin(i)*100 + room_height/2;
c[i] instance_create(cx, cy, obj1);
dir += _dir;
}

[Step]
XeMatrixIdentity(mat); //単位行列
XeMatrixRotate(mat, rotX, 0, 0); //回転させる
XeMatrixTranspose(mat); //転置行列(なぜここで転置するのかは分かりません)

for(i = 0; i < rep; i += 1)
{
o = c[i];
XeVectorSet(pos, o.x, o.y, o.depth, 1) //ベクトルです 必ず最後は1にしないといけません(計算の時 行列と数を合わせるために4次元)

XeMatrixMulVector(mat, pos, pos);//Mulなので行列とベクトルの掛け算です posに計算結果が反映されるみたいです
o.x = XeVectorGet(pos, 0);
o.y = XeVectorGet(pos, 1);
o.depth = XeVectorGet(pos, 2);
o.scale = o.depth/100;
}


[Destroy]
//メモリ解放(?)
XeVectorDestroy(mat);
XeVectorDestroy(pos);

XeLibFree(); //ゲームエンドの時に呼ぶといいと思います

4236名無しさん:2016/02/13(土) 21:55:48 ID:bp5PiC0g
>>4228
Global Game Settings のLoadingから設定しましたか?

4237名無しさん:2016/02/14(日) 12:08:37 ID:58vK/bRw
>>4236
そこから設定しました
だけど上手くいきませんでした
使ってるのはgame maker 8.0です

4238名無しさん:2016/02/14(日) 18:36:40 ID:3lf4p7vA
アイワナにブロック崩しを作りたいのですがマウスが触れるとリフトを横に動かすにはどうすればいいですか?

4239名無しさん:2016/02/17(水) 23:42:12 ID:9mYgRFwM
GAME OVER音をwav形式にしたいんですけど、なぜかなりません
どうすればいいのでしょうか

4240名無しさん:2016/02/23(火) 19:21:45 ID:51p7nrb6
なんとか坂道できたので…
※yuuutsu edition最新版で製作しました。一部挙動が変(2段ジャンプ復活しないとか、下りに入る時のスプライトが変とか)ですが、修正できませんでした。

左から登るやつをslopeL、右から登るやつをslopeRとします。これらのsolidは有効にしてください。

playerのstepコード(確か3つめ)
ver L,R,h;とある行のhを削除し、
if(!place_meeting(x,y+4,slipblock)){
から
}else{
の間を
if((distance_to_object(slopeL)<=1 || distance_to_object(slopeR)<=1) && distance_to_object(block)>1){
hspeed=0
}else if((distance_to_object(slopeL)<=1||distance_to_object(slopeR)<=1) && (distance_to_object(block)=1 || distance_to_object(block)=0)){
x += maxSpeed*h
}else{
hspeed = maxSpeed*h }
にします

また、blockとの衝突イベントのコードを
//前後に壁がある時
if (place_free(x+hspeed,y) == false) {
if (hspeed < 0) { // 左
if (place_meeting(x+hspeed,y,slopeR)){
player.x-=3
player.y-=3
}else{
move_contact_solid(180,abs(hspeed));}}
else if (hspeed > 0) { //右
if (place_meeting(x+hspeed,y,slopeL)){
player.x+=3
player.y-=3
}else{
move_contact_solid(0,abs(hspeed));}}
hspeed = 0;}
//上下に壁がある時
if(place_free(x,y+vspeed) == false){
if(vspeed <= 0){//上
move_contact_solid(90,abs(vspeed));}
else if(vspeed > 0){//下
move_contact_solid(270,abs(vspeed));
djump=1;}
vspeed = 0;}
//斜めの位置に壁がある時
if (place_free(x+hspeed,y+vspeed) == false){
hspeed=0;
}
に書き換えます

4241名無しさん:2016/02/23(火) 19:23:32 ID:51p7nrb6
>>4240 続きです
slopeLとの衝突イベントに
if (place_free(x+maxSpeed*h,y) == false) {//進行方向にブロック(solidオブジェクト)があったら
if (h=-1) {//左
move_contact_solid(180,abs(maxSpeed));
}else if(h=1){//右
x+=3
y-=3}
}else{ //進行方向にブロック(solidオブジェクト)がなかったら
if(h=1){//右
move_contact_solid(0,abs(maxSpeed))
}else if(h=-1){//左
if(!place_meeting(x,y+3,block)){
x-=3
y+=3
}else{
x-=3
y+=1
}}}
if (place_free(x,y+vspeed) == false) {
if (vspeed <= 0) {
move_contact_solid(90,abs(vspeed));}
if (vspeed > 0) {
move_contact_solid(270,abs(vspeed));
djump = true;}
vspeed = 0;
}else{
if (vspeed >= 0) {
move_contact_solid(270,abs(vspeed));
djump = true;}
if (vspeed < 0) {
move_contact_solid(90,abs(vspeed));}
vspeed=0}
と書き、
slopeRとの衝突イベントに
if (place_free(x+maxSpeed*h,y) == false) {//進行方向にブロック(solidオブジェクト)があったら
if (h=1) {//左
move_contact_solid(0,abs(maxSpeed));
}else if(h=-1){//右
x-=3
y-=3}
}else{ //進行方向にブロック(solidオブジェクト)がなかったら
if(h=-1){//右
move_contact_solid(180,abs(maxSpeed))
}else if(h=1){//左
if(!place_meeting(x,y+3,block)){
x+=3
y+=3
}else{
x+=3
y+=1}}}
if (place_free(x,y+vspeed) == false) {
if (vspeed <= 0) {
move_contact_solid(90,abs(vspeed));}
if (vspeed > 0) {
move_contact_solid(270,abs(vspeed));
djump = true;}
vspeed = 0;
}else{
if (vspeed >= 0) {
move_contact_solid(270,abs(vspeed));
djump = true;}
if (vspeed < 0) {
move_contact_solid(90,abs(vspeed));}
vspeed=0}
に書きます。
最後にスプリクトのplayerJumpの最初に
f (place_meeting(x,y+2,slopeR) || place_meeting(x,y+2,slopeL)) {
vspeed = -jump;
sound_play(sndJump);
djump = true;
}
と書き足して終了です。
修正必要だったらごめんなさい

4242名無しさん:2016/02/26(金) 23:00:29 ID:FBezIJL2
タッチセーブをつくりたいのですが、どう作ればよいでしょうか?(GMLとか全然わかりません)
エンジンは、ゆううつエディションver.2.14です。

4243名無しさん:2016/02/27(土) 21:35:12 ID:CXie/K7c
>>4242
過去レスより
savepointの弾のコリジョンイベントのコードをプレイヤーのコリジョンイベント
のコードに移せばオッケーです。
セーブポイントミディアムではなく、普通のセーブポイントのほうです。

4244名無しさん:2016/02/28(日) 15:57:04 ID:CXie/K7c
過去レスを参考にしてみましたができなかったので質問します。
パスワードを入力してブロックを壊すのを作りたくて
プレイヤーのコリジョンに
if(keyboard_check(vk_up)){
get_integer("パスワード",0)
}
Creationcordに
if(get_integer=65){
with(object755){instance_destroy()
}
}
と入れると65を入力してもブロックが壊れません。
どこがおかしいのでしょうか?
ついでにyuuutuエンジンです。

4245名無しさん:2016/02/28(日) 18:53:56 ID:Qy2ChtIc
>>4244
まず、get_integerは入力した数値を戻り値として返す関数です。
そのため、わかりやすくするために、何らかの変数を用意して、
 password = get_integer(〜);
などとしてあげることで、passwordに入力した数値が入ります。
次に、入力した数値をcreation codeにて判別させようとしていますが、
create eventはインスタンスが生成されたときに一度だけ発生するイベントですので、
ここに書いてしまうと、↑キーを押してパスワードを入力した後にイベントが起こりません。
ですので、先程のcollision event内でpasswordに数値を入力した直後に、
 if(password == 65){〜}
と判定してあげれば、うまくいくと思います。
試していないので、間違っていたら申し訳ありません。

4246名無しさん:2016/03/02(水) 11:16:34 ID:WDvgkZOw
アニメーションを常に動かしているオブジェクトがあるとして、
Stepイベントに
if(image_index=5){
instance_create(x,y,object1)}
というものを作り毎回5枚目の画像でオブジェクトを生成
したいと考えています。
しかし、アニメーションが3回ほどループを始めると
生成するのをやめてしまいました。
どうすればずっとオブジェクトを生成することができるでしょうか

4247名無しさん:2016/03/02(水) 12:05:30 ID:Qy2ChtIc
>>4246
image_speedはいくつにしていますか?
image_indexは実は整数値だけでなく小数値もとるので、
image_speed次第ではimage_index = 5になっていない可能性があります。
対策としては、image_index >= 5 のときにflag = 1として、
flag = 0のときにinstance_createが実行されるようにします。
Animation Endイベントでflag = 0に戻してあげれば、
それらしい動きになるのではないかと思います。

4248名無しさん:2016/03/02(水) 13:49:22 ID:zivBSHJI
自分で作った針のスプライトをfreetriggerに設定し、コードも書いた後、
デバッグをするとなぜかもともと入っていた針のスプライトに戻ってしまいます

どうすれば直せるのでしょうか?

4249名無しさん:2016/03/02(水) 15:25:34 ID:Qy2ChtIc
>>4248
針のcreateイベントを見てましょう。

4250名無しさん:2016/03/02(水) 21:07:12 ID:zivBSHJI
>>4249

ペアレントを[playerKiller]にしていて[create]がありませんでした
やはりこれが原因でしょうか?

4251名無しさん:2016/03/02(水) 23:30:07 ID:XlGHq.BQ
800×600のゲーム画面を記録して、
それを後で画面左下に400×300で表示するにはどうすればいいですか?
GBのメニュー画面みたいなやつです

4252名無しさん:2016/03/03(木) 01:10:10 ID:Qy2ChtIc
>>4250
使っているエンジンによるかもしれないので分かりませんが、
勝手に画像が変わるのは、どこかでsprite_indexが変更されているからです。
yuuutu engineのfall_freeなどは、createイベントの赤いパックマンみたいなコマンドのおかげで、
spriteをオレンジ色の針にしているにも関わらず、普通の針の画像が描画されます。
どこかでそのような操作をしているところがないか見てみてください。

4253名無しさん:2016/03/03(木) 11:33:14 ID:zivBSHJI
>>4252
「赤いパックマン」のところを修正したらちゃんと描画されるようになりました!
助かりました!

4254名無しさん:2016/03/03(木) 17:51:17 ID:zivBSHJI
すみません。また壁にぶつかってしまいました...

セーブに触れている状態で[S]を押すと1度だけ効果音が流れるようにしたいのですが、
[collision]を[player]にし、Sキーセーブのコードを書き、

[sound_play(sndBlockChange)]と書いたらキッド君が触れると何回も音が流れてしまいます

どうしたら1度だけ効果音が流れるようにできますか?

4255mumu:2016/03/03(木) 19:43:01 ID:FBezIJL2
4242の者です。タイトル、データセレクト、難易度セレクトの画面で流したい曲があり、追加しました。そして、オブジェクト「playmusic」のコードにその曲名を書きましたが流れません。どうすればよいのでしょう?
コードはこう書きました。   BGM=sndTitle

sndTitleはつけた名前です。

4256名無しさん:2016/03/04(金) 15:28:31 ID:51p7nrb6
>>4255
yuuutsuエンジンを使っているのならそれで問題はないはずですが、もし、どうしてもダメなら…
sound_loop(sndTitle)にしてみてください。
また、BGM=indexと同じように動かしたいなら、
if(sound_isplaying(sndTitle)=false){sound_loop(sndTitle )}と書いてみてください。

4257mumu:2016/03/05(土) 13:31:15 ID:FBezIJL2
なんと!とんでもない理由で直りました!どうやら名前の入力ミスで、曲名の後に1つ空白があったようです。
そいつを消したら直りました。わざわざ解決方法をありがとうございました!

4258:2016/03/06(日) 20:30:17 ID:vkbvhDk.
アイワナ制作初心者です
ワープについてなのですが、どうやってワープ先を指定できるのでしょうか?
[元部屋名]To=[移動先部屋名]
と、調べたらでてきたのですが、そのコードを2つのワープにうちこむということではないのでしょうか?m(*_ _)m
うまくワープできません、どなたかよろしければお願いしますm(*_ _)m

4259名無しさん:2016/03/07(月) 13:30:21 ID:XNwKRaOw
>>4258
どのエンジンを使ってらっしゃるかわからないので、何とも言えませんが、yuuutsu engineの場合はワープのオブジェクトのcreation codeに
roomTo=移動先の部屋の名前
と書けばいいです。また、移動先の部屋にワープを置く必要はなく、その部屋のplayer_startにワープするはずです。
参考になれば幸いです

4260たけ7:2016/03/07(月) 21:39:15 ID:uEdPe9gc
アイワナ作成初心者の質問です。
objkanban(看板オブジェクト)を配置したんですが、上キーで文章を読もうとすると、
「ゆううつエンジンをダウンロードしていただきありがとうございます。」という
メッセージが表示され、任意で表示させたい文章を表示させることができません。
文章のコードを設定していないので読めなくて当然なのですが、
どのようなコードを設定すればいいのですか?
コードも含めてお教えください。

I wanna be the engine yuuutu edition を使っています。

4261名無しさん:2016/03/09(水) 18:10:11 ID:o.W0Yoh.
>>4260

看板のobjectのpress up(↑キーのやつ)のコードに

if(place_meeting(x,y,player)){/*オブジェクトがキッド君と重なってる時に↑キーを押したら*/
show_message("ここに好きな文章を入力")/*「ここに好きな文章を入力」というメッセージが表示される*/
}

ちなみに日本語を入力すると文字化けするので入れる文章はコピペのほうがいいです
show_messageを改行するとその数だけテキストが表示されます

一応例↓

if(place_meeting(x,y,player)){
show_message("爆発まで3")
show_message("2")
show_message("1")
show_message("ドッカーン!")
}

自分はこれでやってます 参考になれば幸いです

4262たけ7:2016/03/09(水) 21:16:07 ID:i/g/MUTw
>>4261
分かりました!
ありがとうございました!

4263名無しさん:2016/03/13(日) 15:09:13 ID:bK7rWgdg
フォント表示についての質問です。

最初は「0」と表示された状態で、
例えばさくらんぼを1回打つ毎に表示が1ずつ増えていく
コードはあるのでしょうか?

4264名無しさん:2016/03/16(水) 19:21:17 ID:bp5PiC0g
>>4263
string というものがあります
stringは数値を文字列に変えます

例 :
a = "10";
b = string(10);

上の2つはどちらも"10"になっています

例2 :
a = 10;
b = string(a); //変数でも可

上のbは"10"になっています

これを使えばカウント表示ができるようになります

4265:2016/03/16(水) 23:16:57 ID:vkbvhDk.
>>4259
返事遅れました、丁寧にありがとうございます
ワープできました!
roomTo=移動先部屋名、しっかり覚えますm(*_ _)m
ありがとうございました

4266匿名キッド:2016/03/18(金) 19:56:45 ID:vkbvhDk.
2度目の投稿となります
といってもまだまだ初歩の初歩です
耐久制作についてですが、まずなにをやればいいかわかりません。
いくつか製作のブログとかみてみましたが、詳細は書いてあるけど、とりあえずどうすればいいかがわからなくって。

今タイルとブロックとワープとかおいて地面はできました、
タイムライン?みたいなのがわからないのですが、とりあえずどこ押したらいいでしょうか?

4267名無しさん:2016/03/18(金) 22:37:04 ID:W5tZffCI
>>4266
ゆううつエンジンの中に参考用の耐久が入っているのでそれを参考にすればよいかと

4268名無しさん:2016/03/18(金) 23:20:46 ID:qa4XsD1Y
キルカミ3のような設定を保存する方法を教えてください!

4269名無しさん:2016/03/19(土) 06:28:05 ID:Gg91zH3.
耐久部屋に入ったら一定時間後にワープ出る様にするだけやで

4270名無しさん:2016/03/19(土) 18:59:18 ID:CXie/K7c
>>4245
プレイヤーのコリジョンに
if(keyboard_check(vk_up)){
get_integer("パスワード",0)
}
password = get_integer
if(password==65){
with(object788){instance_destroy()
}
}
と書いたのですが、できませんでした。
他にもおかしいところがあるのでしょうか?

4271名無しさん:2016/03/19(土) 19:06:09 ID:CXie/K7c
>>4266
長くなりますが、2つに分けて説明します。
yuutuエンジンのサンプルとほとんど同じだけど
まず、ボスを作り、
stepに
if(instance_exists(player)=0){
timeline_running=0
}
と書きます。
Roomstartに
bpm=210
beat=15

timeline_speed=(beat*bpm)/(50*60)
と書きます。
次に上画面の砂時計を押してください。
中身を設定する前に右のほうから砂時計みたいなやつをRoomstartにドラッグしてきて
タイムライン名を選択してください。

4272名無しさん:2016/03/19(土) 19:10:41 ID:CXie/K7c
続き
Addを押して攻撃パターンのコードを書きましょう。
それで出来ると思います。
何回も同じやつを記述するのがめんどくさかったら、コピー機能を使うか、
攻撃用のりんごを作って生成すれば大丈夫です。
タイムラインの一番最後に
instance_destroy()
でボスを消してください。
これで終わりです。
長文失礼しました。

4273名無しさん:2016/03/19(土) 19:53:42 ID:bp5PiC0g
>>4270
if(keyboard_check(vk_up)){
get_integer("パスワード",0)
}
password = get_integer
if(password==65){
with(object788){instance_destroy()
}
}

↑のコードの処理内容を日本語で書いてみます
なぜおかしいのかを考えてみてください



もし上キーを押したら
数値を入力するダイアログを出します

get_integerとpasswordという変数を作り
変数passwordに変数get_integerの数値を代入します

もし変数passwordが65の場合
object788のインスタンスを全て消去します



ヒント
変数が作られた時
デフォルトの設定で変数の数値は0になる

おかしいところが分かれば
もう一度過去ログを見てください

4274名無しさん:2016/03/20(日) 09:44:50 ID:CXie/K7c
>>4273
過去レスを見直して
if(keyboard_check(vk_up)){
get_integer("パスワード",0)
password = get_integer("パスワード",0)
if(password==65){
with(object788){instance_destroy()
}
}
}
と書くと、object788は壊せたのですが、パスワード入力画面が2回ループしてしまいます。
どうしてループしてしまうのでしょうか?

4275名無しさん:2016/03/20(日) 10:16:52 ID:bp5PiC0g
>>4274
よくコードを見てください
get_integerが2個あるためにパスワード入力画面が2回ループしているようです

どちらか一方のget_integerは何も意味を成してなく 65と入れてもうまくいきません

どちらがいらないかを考えてみてください

4276名無しさん:2016/03/20(日) 10:40:15 ID:CXie/K7c
>>4275
なるほど。
if(keyboard_check(vk_up)){
password = get_integer("パスワード",0)
if(password==65){
with(object788){instance_destroy()
}
}
}
を入力するとうまくできました。

4277名無しさん:2016/03/20(日) 14:15:52 ID:zivBSHJI
saveに触れている状態で1度だけ効果音を実行する方法を教えてください!

4278名無しさん:2016/03/20(日) 17:48:17 ID:XNwKRaOw
>>4277
新しいオブジェクトを作り、そのオブジェクトのParentsをノーマルセーブにします。そして、スプライトやらdepthの値やらを同じにした後、プレイヤーとのコリジョンイベントに
if(flag==0){
sound_play(鳴らしたい音)
flag=1}
と書けば終了です。
もし一度離れた後、再び触れた時に同じことをしたければ、Stepイベントに
if(!place_meeting(x,y,player) && flag==1){
flag=0}
と記述すれば大丈夫だと思います。

4279名無しさん:2016/03/20(日) 23:37:02 ID:zivBSHJI
ありがとうございます!

やってみます!

4280名無しさん:2016/03/21(月) 00:29:16 ID:zivBSHJI
>>4278
これをSキーセーブに使おうと思って、

コリジョンイベント
if(saveTimer < 0 && instance_exists(player) == true&&keyboard_check_pressed(ord("S"))){
saveTimer = 30;
image_index = 1;
image_speed = 0.017;
saveGame();

if(flag==0){
sound_play(sound174)
flag=1}
}

にして

ステップイベントを
if(!place_meeting(x,y,player) && flag==1){
flag=0}

と記述したのですが、効果音がセーブに初めて触れたときだけ効果音が鳴ってしまいます
sキーを押すたびに鳴らす方法はありますでしょうか?

4281名無しさん:2016/03/21(月) 13:56:06 ID:bp5PiC0g
>>4280

saveTimerがどういう処理なのか気になりますね
もし何もやっていないのであれば消しても問題ないです

instance_exists(player) == trueが意味ないですね
なぜならプレイヤーがいなければ
プレイヤーとの衝突判定なんて起きるわけがありません
(ただし親オブジェクトがあるオブジェクトには必要になる場合があります)

できる限りif文の処理は無くすように心がけます
(ただしやりすぎて見づらくならないように)

恐らくですがSキーを連打すると音が重複しないようにしたいはずなので・・・・・
sound_isplayingを使うとうまくいくと思います
sound_isplayingを使う場合
flagがいらなくなりますので消してください

あとステップイベントいらないです
消してください

4282名無しさん:2016/03/21(月) 20:37:15 ID:zivBSHJI
>>4280

本当にすみません。
if(saveTimer < 0 &&keyboard_check_pressed(ord("S"))){
saveTimer = 30;
image_index = 1;
image_speed = 0.017;
saveGame();
}
sound_isplaying(sound174)

こう書いたのですが今度は効果音が鳴らなくなってしまいました...

4283名無しさん:2016/03/21(月) 21:14:46 ID:7fb8mOd2
>>4282

sound_isplayingとはsound_playのように音を再生する関数ではなく
指定の音が再生されているかどうかを調べる関数なのでこれ単体では音を鳴らすことはできません

もし仮にsound_isplayingの部分がsound_playだったとしてもifの括弧(image_indexとかsaveGameとか書いてあるとこ)の外にあるので
Sキーを押した瞬間ではなくプレイヤーが触れている間ずっと音を鳴らし続けることになってしまうため
まずはsound_playをifの括弧内に入れましょう

あとはSキー連打で音が重複しないようにするのですが
sound_isplayingを使う場合saveTimerは必要ないので消しても構わないと思います
(saveTimerを使う方法もあります)

4284名無しさん:2016/03/21(月) 21:49:12 ID:bp5PiC0g
>>4282
sound_isplayingがどのような使い方をするのかちゃんと調べてください
sound_isplaying gamemakerで検索すればすぐ使い方が出てきます

必ず調べてから返答はお願いします


Tips

isで始まる変数・関数は基本
true か falseが変数の値・返り値になります
(is_real()やis_string()やobject_is_ancestor()など
他人のプログラムを見るときなどに使えます

object_is_ancestor など先頭にisがついていませんが
Gamemakerの仕様上カテゴリ分けするために
objectが先頭になっているのだと思います)

trueかfalseのどちらかしか入らない変数を作った時などに
isから始まる単語にするなどして統一しましょう
(isGroundやisLockなど)

4285名無しさん:2016/03/21(月) 22:05:44 ID:zivBSHJI
>>4283
>>4284

すみません。ありがとうございます。

4286wannaction:2016/03/21(月) 23:07:01 ID:FBezIJL2
死んでもBGMを止めず(血しぶきのおとだけ出す+出たあともBGMを続ける)、そのあとリトライしてもずっとBGMが続く状態はどう作ればよいでしょうか?

4287名無しさん:2016/03/23(水) 11:08:47 ID:bp5PiC0g
>>4286
killplayer()とworldのRキーイベントですか
そこをよく見てもらうと分かるのですが

BGMを止めている部分があるはずです

確かそれを取り除いて貰うとBGMが続くのではないかと思います

4288名無しさん:2016/03/23(水) 19:23:26 ID:zivBSHJI
>>4284

原因が分かりました
sound_playを消したのが間違いで

sound_isplayingに設定したSEが上手く動作しなかったのが原因でした

if(saveTimer < 0 && instance_exists(player) == true&&keyboard_check_pressed(ord("S"))){
saveTimer = 30;
image_index = 1;
image_speed = 0.017;
saveGame();

sound_play(sound174)
}

sound_isplaying(sound174)

こうしたところ、無事に鳴らすことができました。

4289名無しさん:2016/03/23(水) 20:02:05 ID:bp5PiC0g
>>4288

sound_isplayingが意味を成していないようです
sound_isplayingはいろいろ使いますので使い方覚えてください

>>4284に書いてある通り
isから始まる関数というのはtrueかfalseを基本返します
(UnityなどでもそうでCharacterController.isGroundedがそれにあたります)

つまり
sound_isplayingはif文の中に書かなければ何の意味も成さない ということです

if(sound_isplaying(sound174) == false)
{
//処理
}

sound_isplayingとは
>>4283に書いている通り

再生中かどうかを調べます


if(saveTimer < 0 && instance_exists(player) == true&&keyboard_check_pressed(ord("S"))){
saveTimer = 30;
image_index = 1;
image_speed = 0.017;
saveGame();

sound_play(sound174)
}

sound_isplaying(sound174)

このコードでは
最後にsound174が流れているのかを確認しただけで終わっています

確認しただけでそのまま誰にも結果を教えずほったらかしにしている
そんな状態になってしまっています

4290名無しさん:2016/03/23(水) 23:12:09 ID:FBezIJL2
>>4287

worldのRkeyと、killplayer()の中を見たところ、sound_stop_all()というのがあったのでこいつかなと思って消しました。しかし、死ぬとBGMはうまく続きましたが、いざRを押して
リトライすると、BGMが最初からになってしまいました。何を間違ったか教えてください。
(poroniumu edition ver2.2を使ってます)

4291名無しさん:2016/03/24(木) 01:09:36 ID:bp5PiC0g
>>4290

BGMを再生するコードに問題があります
BGMを再生するコードをみて考えてみてください

ヒント
BGMが再生されているときに
sound_play()で他のBGMを再生しようとすると
今再生されているBGMを止めて指定したBGMを流すそうです

4292名無しさん:2016/03/24(木) 08:15:08 ID:zivBSHJI
まだ足りなかったんですね。

ご指摘ありがとうございます。

42934292:2016/03/24(木) 08:16:20 ID:zivBSHJI
今のは>>4289に向けてです

4294名無しさん:2016/03/24(木) 10:42:29 ID:.6O5qB0w
I wanna be the RUKIMIN!やI wanna be the LoveTrap等はReadmeで「Liteを使って作っている」と明記していますが、起動時にGameMakerのロゴが表示されません。何故でしょうか?

4295名無しさん:2016/03/24(木) 11:49:40 ID:bp5PiC0g
>>4294
詳しくは知りませんが8.0を使った場合ロゴが一切でないそうです
8.1だとロゴが左上に出てきます
因みにStudioの場合Standardだと起動時にロゴが出てきてそれ以上はロゴはでません

4296名無しさん:2016/03/25(金) 14:23:55 ID:.6O5qB0w
>>4285
私はGameMaker 8.0 Liteを使っていますが起動時にロゴが表示されます。

4297名無しさん:2016/03/25(金) 14:24:30 ID:.6O5qB0w
ミスです。>>4295です。連投済みません。

4298名無しさん:2016/03/26(土) 02:10:01 ID:FBezIJL2
上を押すとメッセージが出る看板を作ったんですが、日本語が文字化けしてしまいます。

4299名無しさん:2016/03/26(土) 09:23:33 ID:CXie/K7c
>>4298
※過去レスにあります。
看板のCreateに
message_text_font("MSゴシック",10,c_white,0)

4300名無しさん:2016/03/27(日) 09:05:32 ID:FBezIJL2
>>4299

できました!ありがとうございます!

4301匿名キッド:2016/03/27(日) 17:16:08 ID:vkbvhDk.
すいません
Exectute codeってどこから開けるのですか?
ゆううつです

4302名無しさん:2016/03/27(日) 21:33:35 ID:bp5PiC0g
>>4301
どうも質問の意味が分かりません
どういうことでしょうか?

4303名無しさん:2016/03/28(月) 10:33:37 ID:.6O5qB0w
GameMaker 8.0 Liteを用いて作成していますが、起動時に左上にロゴが出ます。
LoveTrapやRUKIMINも同じGameMaker 8.0 Liteを用いて制作されているはずなのに、何故でしょうか?
>>4295の回答がどうも違うようなのでもう一度質問させていただきます。

4304名無しさん:2016/03/28(月) 10:53:21 ID:bp5PiC0g
>>4303
どうやらこちらの勘違いです

>>4295はウィンドウが出た後のことを書いています が
そちらはウィンドウが出る前のことを質問していたようです

すみません

どこかの設定で消すことはできたと思うのですが
どこの設定だったか覚えていません すみません

4305名無しさん:2016/03/30(水) 05:44:43 ID:o.W0Yoh.
a=instance_create(0,304,objringo);
a.direction=point_direction(0,304,400,304)
a.speed=point_distance(0,304,400,304)/40

これで0,304の位置からリンゴが400,304(中心)へ向かうのは出来ますが
今このリンゴを摩擦をかけながらピッタリ400,304の位置で止まるようにしたいのですが
a.friction=(ここ)をどう書けばいいのか分からないのでご教授お願いします

エンジンはyuuutu editionです

4306名無しさん:2016/03/30(水) 11:26:14 ID:xV0aek46
耐久とかでよくみるカーブ弾を打ち返しで設定したいのですが
バレットのコリジョンにこう書いて20wayがとんでくる
のですが曲げ方がわかりません
a=point_direction(x,y,player.x,player.y)
repeat(20){
idx=instance_create(x,y,objRingo2)
idx.speed=5
idx.direction=a+dire
dire +=18
}
ここになにをつけたらいいのでしょうか

4307名無しさん:2016/03/30(水) 17:34:14 ID:7fb8mOd2
>>4305
V^2ーVo^2=2axという等加速度運動の公式を使えば求められるはずですが
実際に試したところ計算が間違っていたのかやり方が間違っていたのかわかりませんが
移動距離が初速度÷2だけ短くなってしまったので微調整が必要かもしれません


>>4306
objRingo2の側にsin()やcos()を使って位置を制御するようコードを書けばできます
その場合speedやdirectionを設定する必要はなくなります
またmotion_addなどを使う方法もあります

4308名無しさん:2016/03/30(水) 21:34:05 ID:pzXWlZTU
FPSを計算して表示させるやり方、もしくは初めから入ってるエンジンがあったら教えてください

4309名無しさん:2016/03/31(木) 12:23:07 ID:bp5PiC0g
>>4308

fps ... (読み取り専用)現在のFPSを表示する(room_speed依存)

こいつを使うのでは駄目なのでしょうか

より正確な情報が欲しいのでしょうか?

4310名無しさん:2016/03/31(木) 14:22:17 ID:zivBSHJI
クリアタイムをルームに表示させたいのですがどうしたらいいでしょうか?

4311名無しさん:2016/03/31(木) 23:07:56 ID:bp5PiC0g
>>4310

前から書いている通り
過去レスを調べてください

Ctrl+Fで右上に検索欄が出てきます
そこにキーワードを打つと
このページ内にそのキーワードがあるか検索することができます
それで過去レスに同じような質問があるか見てください

4312名無しさん:2016/04/01(金) 00:19:57 ID:pzXWlZTU
>>4309
単純にfpsを表示したかっただけですが、「fps」という関数があるとは知りませんでしたw
レスありがとうございました!

4313名無しさん:2016/04/03(日) 21:20:18 ID:FBezIJL2
アイワナのエンジンというより、gm8.0 Liteの質問ですが、ファミコンの56色(だっけ?)表現でスプライトを
作りたいです。その場合、どうしたらよいでしょうか?

4314名無しさん:2016/04/04(月) 10:35:37 ID:bp5PiC0g
>>4313
ファミコンの色の仕様が分かっている前提で回答します



まずパレットを作ります
仮でスプライトを作成、28×8ぐらいがいいと思います

そこに2×2の色のブロックを塗ると・・・・・
(何色があるかは調べてみてください)

右上の一番上の大きい四角をクリックしますと色の設定が出ますのでそこで調整できます

パレットが出来ましたらそれを保存で完成です



絵を作る場合はスプライトのサイズを若干大きめにしておきます
上で作ったパレットをコピーして
(上で作ったスプライトを開き 編集画面でCtrl+A Ctrl+Cと順番に押す)

そして対象のスプライトにCtrl+Vで貼り付けし 邪魔にならない場所に置いておきます
色を選択する場合は先ほど置いたパレットをスポイトで取ればいいだけです

絵が完成しましたらTransformの中にResizeCanvasとありますのでそれを選択し、
リサイズします(Positionの設定を忘れずに)

4315名無しさん:2016/04/04(月) 17:40:40 ID:bp5PiC0g
GameMakerStudio シェーダーの質問です。
今使っているシェーダーのタイプはGLSL ESです。

vec3 _g[16] = vec3[](
vec3( 1, 1, 0), vec3(-1, 1, 0), vec3( 1,-1, 0), vec3(-1,-1, 0),
vec3( 1, 0, 1), vec3(-1, 0, 1), vec3( 1, 0,-1), vec3(-1, 0,-1),
vec3( 0, 1, 1), vec3( 0,-1, 1), vec3( 0, 1,-1), vec3( 0,-1,-1),
vec3( 1, 1, 0), vec3( 0,-1, 1), vec3(-1, 1, 0), vec3( 0,-1,-1)
);

void main()
{
//略
}

GameMakerStudioだとswitch文やif文がシェーダー内で使えないため、
上のようにvec3を配列で定義したのですが、どうしてもsyntax errorが起きてしまいます。
このような文法が対応してないのか、書き方が間違っているのかのどちらかなのですが、

よくわからないので誰か知っていましたら回答お願いします。

4316名無しさん:2016/04/04(月) 20:07:39 ID:Mw77xQAU
基本的な事ですが質問です…
バイナリファイルを作成するコードがよく分かりません。
エンジンを見ていてもどこで作成したのか…?
どなたか分かる方、お願いします

4317名無しさん:2016/04/04(月) 20:19:55 ID:bp5PiC0g
>>4316
例えばゆううつエンジンならば
Scriptフォルダの

saveGame
saveGameItem

この2つになります

file_binから始まる単語は全てbinary(バイナリ)ファイルを作成する関数となります

バイナリのコードは

まずファイルを開き(open)
開いたファイルに書き込み(読み込み) (write/read)
そしてファイルを閉じる(close)

これが一連の動作になります
(基本はどのエンジンも上と同じことをしているはずです)

4318名無しさん:2016/04/04(月) 21:34:33 ID:Mw77xQAU
>>4317
なるほど…
file_bin_open(ファイル名);の部分で指定のファイルを開くだけでなく、ファイル自体が勝手に作成されている、ということでしょうか?

それと申し訳ないのですがもう一つ質問です、

1F目でfile_bin_openでセーブデータのバイナリファイルを開き、
2F目以降で「セーブ中!」などというようなスプライトを画面に描画して、セーブファイルの1バイトずつ書き込み
セーブする情報の書き込みが終わった次のフレームで「セーブ中!」の描画をやめて、file_bin_closeで閉じる…
こういったようにバイナリファイルの書き込み中に他の動作をすることは可能でしょうか?
もしくは可能でも処理が重くなったりするものでしょうか?

4319名無しさん:2016/04/04(月) 21:40:05 ID:pzXWlZTU
最近詳しそうな方がいるので過去にレス頂けなかった質問をもう1度させてください

800×600のゲーム画面を記録して、
それを後で画面左下に400×300で表示するにはどうすればいいですか?
GBのメニュー画面みたいなやつです

4320名無しさん:2016/04/04(月) 22:50:21 ID:bp5PiC0g
>>4318
より細かい処理のことはテストしてみなければ分かりませんが
file_bin_openかfile_bin_writeのどちらかの関数で
ファイルが無ければ生成しているようです(まぁおそらくfile_bin_writeでしょう)

もう1つの質問ですが可能です
特に重くなることはないと思います

ただし考えられることとして
例えばセーブ中にリトライや閉じるとデータがおかしくなる場合があります

一番問題なのはルームの情報で、1つ数値が違うだけでデータが壊れたり、
違うルームにいきなり飛ばされたりします
最悪の場合 いきなりクリア画面が出てくるみたいなこともありえます

リトライや閉じられるときにセーブが完了するまで待ってから
リトライなどを実行するようにしてください

これで解決かと思いきや まだ問題がありまして

例えば
停電・ブルスクなどでPCの電源落ちたなど

このような状態がセーブ中に起きるとデータが壊れる可能性があります

こっちの場合は対策はあると思うのですが
すいませんちょっと思いつかないです

4321名無しさん:2016/04/04(月) 23:16:52 ID:Mw77xQAU
>>4320
セーブデータは一から考えるとなるとやはり、かなり正確に考えておかないと厳しいみたいですねw
リトライの方は対策のしようがあるとして…
電源落ちは…バックアップが一番確実ですかねw
丁寧で分かりやすいご回答、ありがとうございました☆

4322名無しさん:2016/04/05(火) 01:46:23 ID:bp5PiC0g
>>4319
まず外部データを使うのでliteではできません

1.screen_save()でスクリーンショットを保存します

2.sprite_add()でスクリーンショットのデータを持ってきます
ファイルの場所はscreen_save()を検索すると分かります
a = sprite_add()
と変数に入れられるので入れてください

3.スプライトを描画します
draw_sprite() などを使って描画してみてください

4.スプライトを必ず破棄してください
使い終わったらsprite_delete()を必ず実行してごみ箱に捨ててください
ポイ捨て禁止

こんな感じになります

4323名無しさん:2016/04/05(火) 23:47:06 ID:pzXWlZTU
>>4322
現時点ではliteで残念ですがいずれ有料版にしたいと考えてるので、
しっかりと覚えておきたいと思います。
レスありがとうございました。

4324名無しさん:2016/04/08(金) 18:51:15 ID:Mw77xQAU
質問です
ディレクトリを指定し、そのディレクトリ内でファイルの作成、削除、読み込み書き込みといった操作をするにはどうしたらいいでしょうか?
ようはセーブデータをフォルダにまとめるやり方が知りたいです…

4325名無しさん:2016/04/09(土) 18:02:27 ID:bp5PiC0g
>>4324

グローバル変数を初期化しているところに
global.saveDirectory = "./save/"
みたいな感じにして

関数内で

file_bin〜〜〜〜(global.directory + "ファイル名");

とするしかない

4326初心者(?):2016/04/09(土) 20:43:41 ID:qwMpWMyI
Kamiliaシリーズで点みたいなアイテムがあってそれを取るとジャンプできる回数が1回増えるってのはどうすれば作れますか?
特定の部屋で無限ジャンプする方法も教えてください

4327名無しさん:2016/04/09(土) 23:46:44 ID:7fb8mOd2
>>4326

プレイヤーのdjumpという変数によって2段ジャンプができるかどうかが決まるので
条件に合わせてdjumpの値を変えれば2段ジャンプを復活させることができます

4328名無しさん:2016/04/12(火) 19:43:38 ID:9ApleVKM
質問です
仮に、オブジェクトをある方向にaのスピードで飛ばした時に、
n秒後のオブジェクトの位置を知ることはできますか?
できるのであれば、やり方を教えていただけるとありがたいです。

4329名無しさん:2016/04/12(火) 22:07:18 ID:bp5PiC0g
>>4328
「秒数」では正確にと言われると条件によっては無理です 絶対に処理落ちをしないのであれば可能です
ただし ステップ数で考える場合 正確な位置を知ることができます

5秒経過時の経過ステップ数を求めます
答えは
room_speed*5 (50*5) となります

ぴったり5秒後ではなく250ステップ後(約5秒後)の位置を知れます
これで時間の数値が手に入ります


次に速さを求めます

direction = ???
speed = ???

このように代入した場合でもvspeed hspeedにそれぞれスピードの数値が入ります これがそのまま速さになります

速さの数値が手に入れられました

これで時間と速さがでましたので
後はそれぞれ縦方向の距離 横方向の距離を求めてあげて
その距離に最初いた座標を足してあげれば分かります

4330匿名キッド:2016/04/13(水) 10:39:18 ID:cb1aRTtQ
耐久制作してます
オブジェクトを指定ステップに止めるのはどうすればいいですか?
ゆううつさんのエンジンです
お願いしますm(*_ _)m

4331名無しさん:2016/04/13(水) 16:41:48 ID:Mw77xQAU
>>4330

んー、では仮に
止めたいオブジェクトの名前をappleとしてご説明しますねw

appleのstepイベントに

if (global.stop = true){
vspeed = 0;
hspeed = 0;
}

こう書いておきます。

で、耐久ということはタイムラインをお書きになっていると思いますので、
そのタイムラインの、appleを止めたいタイミングのところで

global.stop = true;

と書いておいてください。
こうすると、そのタイミングでapple全部が止まることになります。

一応、軽く解説しておきますね。

appleのstepイベントについて

if(global.stop = true){ //グローバル変数「stop」がtrueのとき。
vspeed = 0; //縦方向の速度を0にする。
hspeed = 0; //横方向の速度を0にする。
}

タイムラインのコードについて
global.stop = true; //グローバル変数「stop」をtrueにする。

イメージとしては「stop」って名前のスイッチがあって、そのスイッチがオンに切り替わったらappleが止まるようなイメージです。
もちろん、vspeedとhspeedの値を0以外にしてあげると、いきなり進行方向を変えさせることもできます。
もし、一旦止めてからもう一度動かしたいときは、appleを動かす前にstopをもう一度falseにしてあげるか、もしくは他の変数を使わないといけないのでご注意ください。

4332名無しさん:2016/04/13(水) 20:02:10 ID:9ApleVKM
>>4329
求められました!
御回答ありがとうございました。

4333名無しさん:2016/04/13(水) 20:28:29 ID:Mw77xQAU
質問です。
GameMakerStudioのsurfaceについて教えてください。
viewに対し、surfaceは一体どんな働きをし、どんな記述で使うことができるのでしょうか?
出来れば、使い方の一例と解説を添えていただけると嬉しく存じます…。

4334名無しさん:2016/04/17(日) 21:01:55 ID:BF2PWZlA
>>4333 htt://2dgames.jp/2014/01/10/surface_capture/

4335名無しさん:2016/04/18(月) 06:10:15 ID:Mw77xQAU
>>4334
ありがとうございます…!見たところすごく丁寧で分かりやすそうです!
大いに参考にさせていただきます!

4336名無しさん:2016/04/21(木) 17:47:27 ID:UR.ztD6Q
I wanna go bananasのようなリンゴガード(?)のように特定のobjectだけが
弾かれるobjectはどうやって作るのでしょうか?

4337名無しさん:2016/04/22(金) 23:12:07 ID:zivBSHJI
ゆううつエンジンのバグジャンプってなんですか?
またそれを直すことはできますか?

4338名無しさん:2016/04/25(月) 16:32:19 ID:IsfvuKK2
看板を使ってメッセージを表示させた後、特定の針がじりじりと向かってきて
game overになるようにしたいのですが、メッセージを表示させるまでは良いのですが、針が全く動きません。
どうすればよいのでしょうか?
エンジンはゆううつさんのエンジンです。

4339名無しさん:2016/04/25(月) 16:38:29 ID:IsfvuKK2
>>4338ですが、自己解決しました。
設定したスピードが遅すぎて、気づかなかっただけでした。

4340名無しさん:2016/04/29(金) 21:36:39 ID:bp5PiC0g
gamemaker studioで
execute_stringのような
コードを任意実行させるdllありませんでしょうか

4341名無しさん:2016/05/01(日) 10:20:18 ID:CXie/K7c
ゲージを作ることはできるのですが、ボスの上にゲージを作り、ボスが動いたらゲージも動かすにはどうすればいいですか?
試すと、ボスが動いたときに体力ゲージが動きません。

4342名無しさん:2016/05/04(水) 09:33:59 ID:CXie/K7c
>>4341
は自己解決しました。

4343名無しさん:2016/05/05(木) 19:40:41 ID:qCF7Xe92
ゆううつエンジンを使ってアイワナを作成しているのですが、GBのカードヒーローステージのタコッケーのようにある一定の距離になったら近づいてきて、途中で元の位置に戻る、を繰り返すようなオブジェクトはどのようにすれば良いのでしょうか?

4344名無しさん:2016/05/05(木) 20:11:12 ID:qCF7Xe92
>>4343
あ、point_distanceやpoint_directionとアラームを使いやってみましたがうまくいきませんでした。

4345名無しさん:2016/05/07(土) 01:38:39 ID:Aln3yfBg
>>4343,4344
step

switch(count)
case 0:

if(point_distance(x,y,xstart,ystart)<d)
{

speed = s

}
else
{

count = 1

}

break;
case 1:

同じ要領でspeed = -sにする

break;


directionは範囲に入ったときに固定する
変数はd,count,s

4346名無しさん:2016/05/07(土) 15:53:22 ID:7fb8mOd2
テストプレイをしていると特定のルームでタイルもオブジェクトも置いてないはずの場所に 黒や緑の長方形が表示されるバグ(?)が発生しました
ルームを作ったばかりのときは表示されなかったのでオブジェクトやタイルの置きすぎが原因かと思い タイルを減らしたり画面外のインスタンスを非アクティブにしたのですが 長方形の位置が少しずれることがあっても消えることはありませんでした
何が原因で どう対策すればいいのでしょうか?

4347名無しさん:2016/05/07(土) 18:04:07 ID:Aln3yfBg
>>4346
プロジェクトファイルをどこかにあげるかなにかしてください

4348名無しさん:2016/05/08(日) 11:12:13 ID:qCF7Xe92
>>4345
丁寧にありがとうございます。やってみたいと思います。

4349白亜:2016/05/09(月) 10:29:58 ID:NVPqqbfk
成作って難しいですね

4350名無しさん:2016/05/10(火) 18:07:41 ID:yf5uBGQk
>>4346
ルーム上で、タイルを置くときの状態にした上でその変なものが出ているあたりを
右クリックをしたまま塗りつぶすようにして消して見てください。

どのタイルを置くかを指定していない(タイルを置くときに、起きたいタイルの枠を決定できていない)状態のまま
左クリックで押したときにそうなります。

4351NEET:2016/05/10(火) 23:27:18 ID:FBezIJL2
see the moonのように、くぐるとプレイヤーのスピードが速くなる
ゲートみたいなものはどう作るのでしょう?

43524346:2016/05/11(水) 17:22:36 ID:uaRFI3uE
>>4350
直りました!ありがとうございます!

4353名無しさん:2016/05/11(水) 19:19:00 ID:Aln3yfBg
>>4351
ちょっとは自分で考えろやクソボケが

4354名無しさん:2016/05/11(水) 19:48:20 ID:CXie/K7c
>>4351
ヒント
playerのCreateイベントに書いてあるplayerのスピードをラインに振れたときに
playerを早くすればいい
つまり
そのオブジェクトのplayerのコリジョンイベントに
maxSpeed = 9; //左右の移動速度(hspeed)
maxVspeed = 12; //上下の最大速度(vspeed)
とかにすればいいです。
これだけではラインのオブジェクトのスピードが速くなるので何もplayerには変わりません。
あとは自分で考えてください。

4355名無しさん:2016/05/11(水) 19:49:44 ID:CXie/K7c
あと、
>>4353
は言い方考えような

4356NEET:2016/05/14(土) 22:38:10 ID:FBezIJL2
>>4354
(´▽`)
できました!
ありがとうございました!

4357名無しさん:2016/05/16(月) 08:03:23 ID:FBezIJL2
GM8に自作背景(Windows10 ペイント)を取り込みたいのですが、横800,縦608の部屋にピッタリのサイズ
のを貼るとき、どのくらいのサイズ(ペイントでのサイズ)で背景を作ればいいのでしょうか

4358名無しさん:2016/05/16(月) 13:11:56 ID:FBezIJL2
画面外に飛び出すと死ぬようになっていますが、その設定を消したいです。
どこを変えればそれはなくなりますか?
(poroniumu edition ver2.2使ってます)

4359名無しさん:2016/05/18(水) 15:46:49 ID:Aln3yfBg
>>4357,4358
ID:FBezIJL2のお前、人に聞くだけで自分で考えようとしねえよな。マジでそういう考えで質問してるのイライラするから消えてくれ

4360名無しさん:2016/05/18(水) 20:46:24 ID:bp5PiC0g
>>4359に同感です

少し質問しすぎなのではないでしょうか?
少しでも詰まったら質問する というやり方は成長しませんし
後でコードを見返したときにどんな処理か分からなくなったり
処理は分かるがどこを変更したらいいのか分からなくなる
といった問題が起こる場合もあります

質問する前にもう少し考えてみてはどうでしょうか



「自分のほうでこのようにコードを書いたがうまくいかなかった」
などと質問の時に添えておくと良いです

4361名無しさん:2016/05/19(木) 23:09:16 ID:qCF7Xe92
マウスで画面上をドラッグすると乗れる線が描けるというbananasのようなギミックを作成したいです。 どのようにすれば良いのでしょうか?

4362名無しさん:2016/05/20(金) 23:56:47 ID:Aln3yfBg
>>4361
坂が作れるようになってから出直しなさい

4363名無しさん:2016/05/21(土) 09:06:16 ID:qCF7Xe92
>>4362
坂のことなんですが、とあるサイトを参考にして
for(i = 0;i >= -9;i -= 1){
if(!place_meeting(x+argument,y+i,坂ブロック)){
if(!place_meeting(x+argument,y+i,block)){
return i;
}else{
return 0;
}
}
}
return 0;

とやってみたのですがどうもうまく行きません。

4364名無しさん:2016/05/21(土) 17:45:53 ID:uSXSRZx6
>>4363
質問に関係あるかどうかは別として、オブジェクトの名前を日本語にするのは推奨しないよ。
GM8.0(8.1)では日本語に対してコードが対応していないからただの文字化け扱いにされると思う。

GM:Sは知らないけども

4365名無しさん:2016/05/21(土) 18:07:32 ID:7fb8mOd2
>>4363
そのサイトを見たところ普通の45度の坂道が作れることを前提に書かれているようなので
この掲示板の書き込みを参考にして45度の坂道を作ってみるといいでしょう
そうすればそのスクリプトの使い方がわかると思います

4366名無しさん:2016/05/22(日) 09:56:01 ID:bp5PiC0g
>>4363-4364
個人的にはGameMakerがどうのこうのより
プログラムには基本コメント以外に日本語使うのは良くないと思います

例外として「なでしこ」や「プロデル」といった
日本語でプログラミングできる言語でしたら
日本語の変数でも問題ないです

4367名無しさん:2016/05/22(日) 20:36:35 ID:qCF7Xe92
>>4364 >>4366
ちょっと説明少なくてすみません。坂ブロックってのは坂ブロックの名前をここに入れようと思って書きました。言葉足らずですみません。

4368名無しさん:2016/05/22(日) 20:42:41 ID:qCF7Xe92
>>4365
分かりました。坂ブロックをきちんと学びたいと思います。

4369名無しさん:2016/05/28(土) 22:49:53 ID:bp5PiC0g
ds_gridについての質問です (8.1以前だとエラーが出るようです)

width = room_width/8;
height= room_height/8;

grid = ds_grid_create(width, height);
for(i = 0; i < width; i+=1)
for(j = 0; j < height;j+=1)

grid[# i, j] = random_range(0, 100); //・・・?

}
}

grid[# i, j]ってなんでしょうこれ

4370名無しさん:2016/05/29(日) 09:09:34 ID:lq2LMcEU
隣のステージに移動させるにはどうすればいいですか

4371名無しさん:2016/05/29(日) 10:35:10 ID:CXie/K7c
残機制限を付けようとして
その判定オブジェクトに
if(global.death += 1){
d -= 1;
}
を書いたのですが、エラー画面が出ます。
どうすればいいのでしょうか?

4372名無しさん:2016/05/29(日) 10:37:12 ID:CXie/K7c
>>4370
部屋の大きさを
800・608から
1600・608
にすればokです。
playerがx座標800を超えると右の部屋に移動できます。

4373名無しさん:2016/05/29(日) 20:26:33 ID:lq2LMcEU
>>4372
ありがとうございます!

43744369:2016/05/30(月) 20:55:06 ID:bp5PiC0g
自己解決しました
一応情報共有します

[# 数値, 数値]はds_gridを扱いやすくするものでした

grid[# 0, 0] = 10;

とするとgridの0, 0に10が入ります
(つまりds_grid_addと同じことをします)

num = grid[# 0, 0];

こうするとgridの0, 0の値が取得できます
(つまりds_grid_getと同じことをしています)

因みにds_list ds_mapにも同様の機能がありましてそれぞれ

list[| 値]
map[? 値]

このように設定や取得ができることがわかりました

Studioのみの機能なので気を付けてください

4375名無しさん:2016/05/31(火) 16:16:03 ID:lq2LMcEU
warpを全然使わなければ、room1つでアイワナ1作品が完成することもありますか?

4376名無しさん:2016/05/31(火) 20:54:37 ID:GM.fHl9k
>>4375
人による

4377名無しさん:2016/06/02(木) 23:09:45 ID:pzXWlZTU
エンジンはアイワナ基盤で質問です

saveを撃った時、つまりsaveGameのスクリプトが実行された時に任意のglobal変数を保存する方法は過去レスを探して出来る様になったのですが、
ゲームオーバー時、つまりkillPlayerのスクリプトかworldのRキーイベントの時に任意のglobal変数を保存ができません。

f = file_bin_open("save"+string(global.savenum),1)
file_bin_write_byte(f,global.適当)
file_bin_close(f)



f = file_bin_open("save"+string(global.savenum),0)
global.適当 = file_bin_read_byte(f)
file_bin_close(f)

をセットで色々と試したのですが一向に出来ません
"save"を"DeathTime"にしてもダメと既に数時間近く試しても出来なかったので質問させていただきました
かなり困ってるのでご助力ください・・・

4378名無しさん:2016/06/05(日) 16:33:56 ID:EDuzZks2
>>4377

変数を保存をするファイルとセーブデータ(roomとか座標とか)が入ってるファイルは同じかな?

同じならゲームオーバー・リスタート時はglobal変数の位置からをセーブすればいい。


通常セーブスクリプト内は

①現在のroom番号
②playerのxとy座標
③その他いろいろ
④変数保存場所

の順になってると思うので

普通にセーブしたときは①からの保存
ゲームオーバー・リスタート時は file_bin_seek(f,pos) を使って①〜③を飛ばして④から保存を開始すればいい



binファイルは数値のみ保存してるファイルですので、

f = file_bin_open("save"+string(global.savenum),1)
file_bin_write_byte(f,global.適当)
file_bin_close(f)

のように書いた場合、もともとroom番号に使われていた場所にglobal変数の数値を入れたことになります。

4379名無しさん:2016/06/06(月) 02:54:24 ID:pzXWlZTU
>>4378
分からなかったので、ゲームオーバー時に通常セーブスクリプトを実行して、
その後playerの生成や位置を調整してそれっぽく出来ました

かなりゴリ押しでやったので、>>4378さんの正規のやり方も覚えたいので再度お聞きしたいのですが、
file_bin_seek(f,pos)はどう使うのですか?

f = file_bin_open("save"+string(global.savenum),1)
file_bin_seek(f,pos)
file_bin_write_byte(f,global.適当)
file_bin_close(f)

この様な感じですか?またposに入る変数は何でしょうか?
気が向いたらまたよろしくお願いします

4380名無しさん:2016/06/06(月) 20:52:03 ID:lbxHrjqU
こんなエラーが出てしまいます。

___________________________________________
FATAL ERROR in
action number 2
of Step Event
for object player:

COMPILATION ERROR in code action
Error in code at line 8:
h = R;
^
at position 7: Variable name expected.

Stepイベントの8行目がおかしいって事はわかるのですが・・・
h=Rの所をコピーして8行目にペーストしてもダメでした。
回答よろしくおねがいします。

4381名無しさん:2016/06/06(月) 22:16:26 ID:bp5PiC0g
>>4380
hの文字の色はどうなっていますか

4382名無しさん:2016/06/08(水) 19:56:15 ID:Flmqbzz.
>>4379
まとめwikiのfile_bin_seekの解説を見てみますと

「開いているファイルIDの、現在位置を引数posの位置にします。~先頭は 0 となります」

と 正直この説明では分からないと思いますので例を出してみます

var f = file_bin_open("test.bin", 1);
file_bin_write_byte(f, 65);
file_bin_write_byte(f, 66);
file_bin_write_byte(f, 67);
file_bin_write_byte(f, 68);
file_bin_write_byte(f, 69);
file_bin_close(f);

上のコードを実行してみましょう
実行したらtest.binをメモ帳で開いてみてください すると

「ABCDE」

と書かれているのが分かります
(なぜABCDEと書かれているか に関しては今回省かせていただきます)

ではfile_bin_seekを使ってみます

var f = file_bin_open("test.bin", 0);
file_bin_seek(f, 3);
var b = file_bin_read_byte(f);

//chr() ... 分かりやすい文字にする魔法の関数だと今回は思ってください(実際は違う)
show_message(chr(b));
file_bin_close(f);

実行するとウィンドウに「D」と出てきます

つまりfile_bin_seekで次に読み取るデータの位置がずれるということです
(もしfile_bin_seekをしなければウィンドウに「A」が出てきます)

4383名無しさん:2016/06/08(水) 20:23:11 ID:Shy6TwL6
GameMakerStudioの質問です。
ディレクトリの中にセーブデータの作成を行いたいのにすっかりお手上げです。
以下のようなスクリプトを組み、Stepイベントで実行したのですが、
ファイルが生成されないばかりか、ディレクトリすらできていないようで、
変数も全て宣言はしてあり、そこでエラーが出るとかそういったことはないのですが…

switch(global.savephase){       
case(0):
if (directory_exists(string(working_directory)+"Savedata") = false){
directory_create(string(working_directory)"Savedata");
}
svf = file_bin_open(string(working_directory)+"/Savedata/save"+string(global.savenum)+".dat",1);
global.savephase += 1;
break;
case(1):
if ((global.Starnum[0]) > 9999){
global.Starnum[0] = 9999;
}
global.savephase += 1;
break;
case(2):
a = (global.Starnum[0])div 256;
file_bin_write_byte(svf,a);

…(以下は変数の書き込みを行うだけなので略)

4384名無しさん:2016/06/08(水) 23:00:15 ID:/zuJ8fEU
>>4381
なんか薄いです
全部のhの色が薄いです

4385名無しさん:2016/06/08(水) 23:01:07 ID:/zuJ8fEU
>>4381
なんか薄いです
全部のhの色が薄いです

4386名無しさん:2016/06/08(水) 23:55:29 ID:JSu9E1ng
>>4384
hはスプライトか何かしらのファイル名で使われています
hというファイル名を何とかするか
変数名を変えるなどしてください

4387名無しさん:2016/06/09(木) 22:25:07 ID:/zuJ8fEU
>>4386
ありがとうございます
試してみます
確かにhという名のファイルがスプライトにありましたので名前変えました

4388名無しさん:2016/06/09(木) 22:30:03 ID:/zuJ8fEU
解決しました
ありがとうございました
アイワナを世に出すことができそうで良かったです

4389名無しさん:2016/06/09(木) 22:55:05 ID:/zuJ8fEU
またエラーか!?
俺なんかやったのか?

___________________________________________
FATAL ERROR in
action number 1
of Collision Event with object player
for object roomChanger:

Unexisting room number: 0

助けて下さい
ワープに入った時にこの表示が出ました

4390名無しさん:2016/06/09(木) 23:39:15 ID:Shy6TwL6
>>4389
ワープに行先のroomが設定されてないのではないでしょうか。
CreationCodeの中に記述をしてください。

4391名無しさん:2016/06/11(土) 16:36:26 ID:/zuJ8fEU
>>4390
ありがとうございました
初心者なので、わからないことが山積みで・・・
今度はこんなエラーが

ERROR in
action number 1
of Trigger Event: <Deleted>
for object object749:

Sound does not exist.

object749が一体何をしたんだ

4392名無しさん:2016/06/11(土) 16:54:20 ID:/zuJ8fEU
ちなみに、object749を消したら、


___________________________________________
ERROR in
action number 1
of Trigger Event: <Deleted>
for object object748:

Sound does not exist.

一体object748が何をしたっていうんだ
ちなみにobject749とobject748は自分でプログラム組んで作りました

4393名無しさん:2016/06/11(土) 17:52:02 ID:inWTUayM
>>4392

sound does not exist
と書いてあるので音の名前を間違えて入力したのが原因だと思います

あとエラーが発生したときはどこにどんな問題があるかが表示されたメッセージに書いてあるのでよく読むといいです

4394名無しさん:2016/06/11(土) 19:46:56 ID:/zuJ8fEU
ありがとうございます
ファイルに保存だけでなく、きちんとsoundsに追加しなければダメだったんですね

4395dyyosi:2016/06/12(日) 10:35:16 ID:1p0su1RE
難易度を0から1にしたら針が増えるようにしたいんです。
ちなみにエンジンはポロニウムです。
調べても見つからなくて・・・

4396名無しさん:2016/06/12(日) 12:53:20 ID:pnqNc/z6
>>4395
ヒントになりそうなコードをsavePointMediumより抜粋

if(global.difficulty > 0){
instance_destroy();
}

あとは自分で考えてみてください。

ところで、「特定のy座標で方向転換するリフト」というのを作ったのですが、上側で方向転換してくれません。下側ではちゃんと方向転換するのですが…。
具体的に言うと、下方向に移動した後(ここはCreation Codeで設定してあります)y>288で上方向に跳ね返るところまでは正常なのですが、y<160で跳ね返らず天井まで行き、そのまま天井で止まるという状態です。
何度見直しても原因がさっぱり分かりません…誰かお助けください

if expression y<160 is true
reverse vertical direction
if expression y>288 is true
reverse vertical direction

4397dyyosi:2016/06/12(日) 14:55:51 ID:1p0su1RE
>>4396
何度見てもわかりません。
あとhardを1にしているのに1を宣言するとveryhardしか消されません。
どうしてもできないので教えてください。

4398名無しさん:2016/06/12(日) 17:51:10 ID:CXie/K7c
>>4397
if(global.difficulty = 0){
instance_destroy();
}
これをミディアムのみで消す針のCreationcodeに。

4399名無しさん:2016/06/12(日) 19:52:45 ID:/zuJ8fEU
誰か動かした針の止め方を教えてください
エンジンはporoniumuです

4400名無しさん:2016/06/12(日) 22:56:29 ID:CXie/K7c
>>4399
ヒント
pathを使いましょう。

4401名無しさん:2016/06/13(月) 06:00:30 ID:dR4Fk.KU
pathは使っちゃダメ

4402名無しさん:2016/06/13(月) 22:02:25 ID:inWTUayM
>>4399
pathを使ってもできなくはないですが
汎用性が低い上にいちいちpathを作らないといけないのでやめたほうがいいです
製作wikiに「針の止め方」というページがあるのでそちらを参考にして作りましょう

あとここで質問する前にできるだけ自力で調べてください
全部の質問に答えてもらえるわけではないですし自分で考えて作ったほうが確実に製作力がつきますので

4403名無しさん:2016/06/13(月) 22:07:24 ID:bp5PiC0g
>>4399
そうですね・・・・・
どのように動いている針をどのように止めるのかを教えてください

例えば : 縦横無尽に動いている針を少しずつ減速しながら止めるなど

pathを使うかどうかはこれを聞いてからではないと判断出来ないと思います

4404名無しさん:2016/06/13(月) 22:33:28 ID:lbxHrjqU
>>4402
poroniumuエンジンの解説ページは少ないんです・・・
大体がyuuuutuエンジンで・・・
トリガーで動かした針を止めるという動作です

4405名無しさん:2016/06/13(月) 23:23:05 ID:Aln3yfBg
>>4383
Studioはファイルの生成や保存の仕様がかなり違うのでworking_directryの場所も謎です。任意の場所にファイル作成するエクステンションがあるのでそちらを試されてはどうでしょう

4406dyyosi:2016/06/14(火) 17:15:45 ID:1p0su1RE
難易度によって針やさくらんぼを減ったり増やしたりすることはできたんですけど、
0をmediumなのにhardになってしまいます。warpstart、savepoint、を調べたんですけど結局わかりませんでした。
急に起こったので原因はわからないままです。

4407名無しさん:2016/06/14(火) 21:53:32 ID:pnqNc/z6
ちょっと言葉がややこしくて状況がつかみにくいんだけど、もしかしてどっかでglobal.difficultyそのものを変換するコード書いてたりしない?

4408名無しさん:2016/06/15(水) 14:36:52 ID:Shy6TwL6
>>4405
ありがとうございます。
ただ自己解決してしまいました。
そもそもソースコードはスラッシュの向きが逆になってましたねww(「/」→「\」)至極単純なミスですw
気付くまでに時間がかかってしまいました…ww ソンナコトモアルヨネ

ファイルの生成もちゃんとできました。
working_directory(作業ファイルパス)は少なくとも7以降のWindowsのOSだと
C:→User(ユーザー)→"ユーザー名"→AppData→Local又はRoaming→"ゲーム名"
を探せば出てくるようです。(隠しファイルの表示設定を「表示する」にしておかないと探せませんが…)
LocalとRoamingはGlobalGameSettingsで切り替えることができ、どちらでもちゃんと保存できていました。

最悪、オブジェクトのDrawイベントで
draw_set_font("フォント名");
draw_set_color("任意の色");
draw_set_halign(fa_center);
draw_text(view_xview+view_wview/2,view_yview+view_hview/2,working_directory);
こんな感じのコード書けば、どこに保存されたかゲーム再生時にだいたい分かります。
「gm_ttt_なんたら」の部分がよく分からないかもしれませんが、取りあえずその上のフォルダまではたどりつけるかと。
「gm_ttt_なんたら」のフォルダが入っているところに、ゲーム名のフォルダがあると思うので、それを開けば作成したファイルが出てきます。

GameMaker8.1までとは動作の仕様が異なるのでこういった差が生まれるのだと思いますが、
勝手さえ分かれば案外これでも問題ないのではないかと思います。

保存先が分からなくて困った方は是非参照してみてください。

4409名無しさん:2016/06/15(水) 18:54:18 ID:pnqNc/z6
>>4396を書いてから色々試しましたがやっぱりうまく動きません…分かったことをいくつか書いておきます。あと言い忘れてましたがゆううつエンジンです

・上下でのイベントにhspeed指定を書き足してみたところ、上側でも横移動の速度のみ指定の位置で変わったので、『y<160』自体は正常に動いている事が分かった。
・movingPlatform(問題のリフトはこれを元に作っています)のStepイベントに最初から書かれているコードのうち以下の部分を消すとリフトの動きは目的通りになった。ただしリフトに乗れなくなった。

if (vspeed<0) {
yspeed=vspeed;
vspeed=0;
}

…うーん、一体何がいけないのか…消した部分の『vspeed=0』が何か悪さをしている気がするのですが…

4410enigma:2016/06/15(水) 20:23:39 ID:dm4/ohDw
普通にワールド作ってテストプレイしたら、一定のリズムでジャンプして、弾も一定のリズムで3発ずつ打っている状態で、操作ができません。
どうしたら良いですか?

4411名無しさん:2016/06/15(水) 22:23:16 ID:/zuJ8fEU
>>4402を書いてから色々試してみました。
どうやら俺がやりたいのは「pathをトリガーで動かす」ことのようです。
そして色々調べて「エンドアクション」がどうのこうのまではわかりました。
しかし、それはゆううつエンジンの場合であって、ポロニウムエンジンの場合は一切書いてません。
色々試しましたがトリガーを通らずにpathが作動してしまいます。
誰か助けてください。

4412名無しさん:2016/06/17(金) 00:18:58 ID:Shy6TwL6
>>4410
ああ…懐かしいw
自分も始めたばかりのときそんなミスをした覚えが…w

この場合、room名が日本語になっている(2バイト文字が入っている)
もしくは、作ったroomが最初のステージであるにも関わらず、room名がご使用になっているエンジンで設定されているglobal.firstStageの名前と違うか何かだと思います。

後者についてちょっとだけ詳しく書いておきますね。
左のフォルダが並んでいるところに「Script」があると思います。
Scriptを開くと「initSetGlobals」とありますよね。
それを開くと多分

global.firstStage = rStage01;

とか書いてある部分があると思います。
この一文は、ゲームをスタートしたとき、最初にキッドくんが行くべきステージを設定している文です。
global.firstStageが「最初に行くべきステージ」で、
rStage01が「そのステージがどのroomなのか」を書いてあるわけです。

このバグを直すには、このScriptの「rStage01」の部分を書き換えるか、
もしくはご自分で作ったroomの名前をrStage01に直すかのどちらかで解決すると思いますよー

4413名無しさん:2016/06/17(金) 21:00:15 ID:.6O5qB0w
I wannna be the NostalgieやI wanna Classicのように、
Pキーが押されるとメッセージボックスとして独立しないポーズ状態にするには
どのようにすれば良いのでしょう?

4414名無しさん:2016/06/18(土) 02:00:51 ID:Shy6TwL6
>>4413
sleepという関数を使います。
I wanna be the engine Erunatyan editionを参考にしてみてください。

4415enigma:2016/06/18(土) 09:27:47 ID:dm4/ohDw
>>4412
それをやったんですが・・・
エラーが起きました。↓
「FATAL ERROR in
action number 1
of Step Event
for object init:

Unexisting room number: 0」
です。
そして、initというオブジェクトを消したら、4410のような状態に戻ってしまいました。
どうしたら良いですか?何度もすみません

4416名無しさん:2016/06/18(土) 20:49:22 ID:Shy6TwL6
>>4415

あっwww
roomを消してしまわれたんですね…w

そのエラーは
initオブジェクトに書いてあるコードの中のroomがありませんよ
って意味です。
roomが設定されていなかったか、roomの名前が違ったか、もしくはroomを消してしまったかのどちらかだと思います。

initは消さないでほしかったのですが…そういうこともありますね、仕方ありませんw
作り直しましょう。

オブジェクトを新しく作成し、initという名前にしてください。
visible,solid,persistentにはチェックを入れずに。depthも変えなくて結構です。
また、spriteもno sprite、parentもno parent、maskはsame as spriteのままで構いません。

stepイベントに

initSetGlobals(); //スクリプトです。最初のステージとか、ボスの数とか、アイテムの数とか書いてあります。
initSetControls(); //スクリプトです。ここでキーコンフィグしてます。これをしないとキッドくんがご存知のようにあらぶります。
if (file_exists("temp.dat") == true) {
tempExe(); //スクリプトです。前回、ゲームが強制終了しちゃった場合、これが実行されて、中断されたところからゲームが始まります。
}else{
room_goto(rTitle); //タイトルのお部屋に行きます。
}

…と、書きます
あ、roomやscriptの名前が違うことがあるので、そこに注意してくださいね!

あと、roomのフォルダの、一番上に「rInit」のroomを持ってきておいてください。
もし「rInit」を消してしまっている場合は、
再びroomを作って、「rInit」の名前にしたら、roomの大きさとviewを設定して、initを配置してから
roomフォルダの一番上に持ってきておいてください。
大きさとviewの設定とか分からない場合はまたどうぞww

4417名無しさん:2016/06/18(土) 20:53:44 ID:Shy6TwL6
>>4415
>>4416の出だし数行、なんか日本語おかしいですけど気にしないでください。
…気になるからこうやって書き足しちゃってますけど
いえ、気にしないでください。

4418enigma:2016/06/18(土) 22:03:05 ID:dm4/ohDw
>>4416
Stepというイベントを作ったのですが、書き込むことが出来ません
どうしましょう(もう初心者すぎて死にそうです)

4419名無しさん:2016/06/18(土) 22:47:15 ID:CXie/K7c
>>4418
右の枠にメモ帳マークがあると思うのでそれを左の白いとこにドラッグしましよう。

4420enigma:2016/06/19(日) 11:30:43 ID:dm4/ohDw
>>4419
できました!が、すみません。
まず、4416で言っていたif (file_exists("temp.dat") == true) {この部分って貼り付けるんですか?
やってみたら左側が赤くなりました。消したら治りました。
あと、大きさとviewの設定のやり方は知っているんですが、数値を教えて下さい!
ホント何度もすんません

4421enigma:2016/06/19(日) 12:12:41 ID:dm4/ohDw
またまたです。
それなら、日本語無しで、コピーして貼り付けすればいいだけの文の書き込んでいただければありがたいです!
よろしくお願いします。(Stepイベントのです)

4422名無しさん:2016/06/19(日) 20:05:24 ID:CXie/K7c
>>4420
エンジン名はyuuutuエンジンですか?
yuuutuエンジンなら
Stepに
//"temp"ファイルが存在していればロードし、無ければ次の部屋(スタート地点)に移動
if(file_exists("temp") == true){
tempExe();
}
else{
room_goto_next();
}
と書いています。

4423名無しさん:2016/06/19(日) 22:32:36 ID:/zuJ8fEU
>>4411
自己解決しました。ありがとうございます。

4424名無しさん:2016/06/20(月) 16:23:08 ID:/zuJ8fEU
質問です
一定数以上のボスを倒すと消えるブロックはどのように作るのですか
調べてもエンジンが違うので出てきませんでした
ねころんエンジンからの移植もダメだったので・・・
エンジンはポロニウムエンジンです

4425名無しさん:2016/06/22(水) 22:40:20 ID:/zuJ8fEU
質問です
ポロニウムエンジンでの重力反転の方法を教えて下さい
ゆううつエンジンから移植を試したのですが、全然だめで・・・

4426名無しさん:2016/06/24(金) 00:59:24 ID:zivBSHJI
質問します
アイワナのゲーム上に座標を描画したいのですがどうやればいいんでしょうか?

4427dyyosi:2016/06/25(土) 13:08:33 ID:1p0su1RE
>>4407
針とかさくらんぼは元に戻したのでないですね。
あと色の違う水(内容は通常の水と同じ)のを作ったんですけど
ふわふわするのになぜか無限ジャンプになりません。

4428名無しさん:2016/06/25(土) 15:06:02 ID:/zuJ8fEU
>>4425です
yuuutuエンジンの仕組みを調べた所、重力反転のオブジェクトの他に、
「player2]というオブジェクトがあるのがわかりました。
しかし、それを移植して、yuuutuエンジンの重力反転オブジェクトを触ると、
操作ができなくなってキッド君が上に飛んでいきます
キッド君の画像は変わりません
上がるスピードはvspeedで換算すると-2ぐらいです
誰か重力反転の仕方を教えて下さい
お願いします

4429名無しさん:2016/06/25(土) 22:52:35 ID:pnqNc/z6
いっそyuuutuエンジンで作るという手

4430名無しさん:2016/06/26(日) 12:33:06 ID:bK7rWgdg
キッド君の当たり判定をcollisionイベントではなく
if文で作成するにはどうしたらいいでしょうか?

4431名無しさん:2016/06/30(木) 15:50:56 ID:/zuJ8fEU
>>4428
自己解決しました。
(ただし、重力反転したまま着地は出来ない)
with(player){
gravity=0.4;
gravity_direction=90
};
これで行けました。
with(player)を書くとplayerがそのオブジェクトに触った時に
下に書いてあることが起きる、というのを思い出せて良かったです。
ありがとうございました。
結構作りこんじゃったからもうエンジン変えられないんですよね・・・
あと、一定数のボスを倒したら消えるブロックの作り方を教えて下さい!
ねころんエンジンから移植してもダメだったので

4432名無しさん:2016/06/30(木) 23:03:42 ID:/zuJ8fEU
>>4431
これも自己解決しました。
しかし、新たな問題が・・・
セーブデータ一つだけで遊ぶにはどのようにすればいいですか
ポロニウムエンジンです

4433名無しさん:2016/07/01(金) 06:13:10 ID:inWTUayM
>>4426
draw_textとstring関数を使えばできます

>>4430
プレイヤーオブジェクトのコリジョンイベント内のコードをステップイベントにコピーして
place_meetingやplace_freeなどでうまく分岐させればできます
例えばplayerKillerとのコリジョンイベントだったら
if(place_meeting(x,y,playerKiller)){
killPlayer();
}
とステップイベントに書き込むような感じです

>>4432
I wanna go the Parallel Worldのようにタイトル画面でシフトキーを押したら
セーブを選択せずすぐゲームを始められるようにするということでしょうか

それならゆううつエンジンのライトモード(global.Lite_Modeがtrueのときはそのような仕様になる)
を移植すればできると思います

ヒント
titleButtonというオブジェクトのコードをよく見ましょう

4434名無しさん:2016/07/02(土) 01:04:57 ID:bK7rWgdg
難易度選択のワープに触れたら↓

ERROR in
action number 1
of Trigger Event: <Deleted>
for object オブジェクト名:

Sound does not exist.

「オブジェクト名」とは自分で作ったオブジェクトです。
一度このエラーが起こったのでそのオブジェクトを消したら別のオブジェクト名でエラーが起こりました。
どうすればいいのでしょうか?

4435名無しさん:2016/07/03(日) 06:03:39 ID:N/qbvQOI
現在ゆううつエンジンでbGMを使用して作成を進めていてbGMの大まかなシステムは、
えるなちゃんさんのClassicのエンジンを参考にさせていただきました。

それでこのアイワナでは死亡でBGMの音量が0(フェードアウト)になりまして、
Rを押すとまたBGMが続きから始まるという風なシステムを作りました。

すると新規に作成したセーブデータの時は難なく成功したのですが、
セーブデータをロードしたときにBGMが再生されませんでした。
セーブの中身にglobal.bgmstage(別の部屋でもBGMを続けるための変数)と
global.bgmtemp(流れているBGMのID)が保存されているのですがこれが原因ではと思い、
warpStartのif文dif==4の所に初期化するようなコードを入れたのですがうまくいきません。
死亡時のBGMはglobal.deathbgmで処理しておりセーブデータをロードした一回目の死亡時は成功するのですが、
二回目の死亡時はglobal.bgmtempとglobal.deathbgmが同じになるという訳の分からない状態になりました。
あと同じになったときにリトライをするとBGMが消えたりもします。

コードを載せますのでヒントでもいいので頂けたらありがたいです。

warpstartのif文
if(dif == 4){
f = file_bin_open("save"+string(global.savenum),1);
file_bin_seek(f,10);
file_bin_write_byte(f,1); ←ここにglobal.bgmstageが格納してあります
file_bin_write_byte(f,1); ←ここにglobal.bgmtempが格納してあります
file_bin_close(f);
loadGame();
}

bgmを再生するオブジェクトのstep文(えるなちゃんさんのエンジンを参考にしました)
if fn!=0{
if global.bgmstage!=fn{
global.bgmstage=fn;
bGM_close(global.bgmtemp);
global.bgmtemp=bGM_play("sound/_BGM_/"+string(fn)+".ogg",1,loop);
}
}
//fnはfilenameの略で名のとおりファイル名です

killplayerのscriptのbGMの部分です
global.deathbgm = bGM_play("sound/_SE_/gameover.ogg",1,false);
instance_create(0,0,fadeout);

これで生成されるfadeoutのalarm[0]文です(1F後に開始されるようになってます)
if global.vol>0{
global.vol-=0.02;
bGM_set_volume(global.bgmtemp,global.vol);
alarm[0]=1;
}else{
instance_destroy();
}

worldのRボタンのbGMのイベントです
if !instance_exists(player){
bGM_set_volume(global.bgmtemp,1);
bGM_close(global.deathbgm);
}

よろしくお願いします。

4436名無しさん:2016/07/04(月) 17:15:02 ID:/zuJ8fEU
>>4433
ありがとうございます!できました!
また質問が・・・
弾が当たるとその弾が上に飛んで行く、という物体はどうすれば作れますか?

4437名無しさん:2016/07/04(月) 20:30:01 ID:pnqNc/z6
以前質問させていただいた動くリフトの件は自己解決いたしました。しかし、ボスで問題が…。

ボスの攻撃で画面を揺らすようにしたくてこんなコード↓を書きました。
if(boss2frag3=0){view_xview[0]=20;boss2frag3=1;boss2quake=20;alarm[0]=1}
if(boss2frag3>0&&boss2frag3<6){
if(view_xview[0]>0){view_xview[0]=-boss2quake;alarm[0]=1}
if(view_xview[0]<0){boss2quake-=1;view_xview[0]=boss2quake;alarm[0]=1}
if(view_xview[0]=0&&boss2frag3<5){view_xview[0]=20;boss2quake=20;boss2frag3+=1;alarm[0]=1}
if(view_xview[0]=0&&boss2frag3=5){boss2quake=20;boss2frag3+=1;alarm[0]=1}
}
if(boss2frag3=6){boss2frag3=0;alarm[0]=0;alarm[11]=89}

これで『画面を5回左右に揺らして次の攻撃へ移行』しようと思っていたのですが、何故か左にしか揺れないのです。
具体的に言うと、『画面全体が左方向にずれた後ゆっくり右に戻る』という動作を5回繰り返します。そうではなく左右に細かく揺らしたいのです。どこを改善すればいいでしょうか?

4438名無しさん:2016/07/04(月) 20:33:05 ID:pnqNc/z6
言い忘れてました。このコードはボスのAlarm[0]内に書いています。Alarm[11]はボスの行動を切り替えるために用意したものです。

4439名無しさん:2016/07/05(火) 22:10:21 ID:/zuJ8fEU
>>4436です
with(bullet)の後にdirection=90
speed=16と書いたら行けました

4440名無しさん:2016/07/05(火) 22:51:39 ID:/zuJ8fEU
また問題が・・・
上の方で無敵に関する質問が出てきてきましたが、ダメでした。
どうすれば無敵にできますか?
Collision

// いろいろな処理

if ( flash_time == 0 ){ // 点滅中はhpを引かない
HP = HP - 1;
flash_time = 50; // 点滅の長さ(回数)
alarm[0] = 1; // 点滅用アラームに時間をセットする
}




Alarm0
visible = !visible; // 点滅 visible を毎回 on , offする

flash_time = flash_time -1; // 点滅時間をへらす

if ( flash_time > 0 ){ // 点滅時間0でないならまたアラームを呼ぶ
alarm[0] = 3; // 点滅周期をセット
}

これで行けないですか?

4441名無しさん:2016/07/06(水) 10:43:02 ID:vFyh73/M
>>4440
透明にする処理はあっても、それを解除する処理が無いのが原因だと思う。=は「左辺の状態を右辺の状態と同じにする」だけだからね。パッと思いついたのは、if文を使って透明かどうかを判断し明滅させる方法。

あとエンジン何使ってるか知らないけど、少なくともyuuutuエンジンにはflashっていう関数があるからyuuutuエンジン使ってるならそれで。

4442名無しさん:2016/07/06(水) 12:15:15 ID:zlf0DFwc
visible = !visibleってダメなの?
毎回値変わる気がするんだけど

4443名無しさん:2016/07/06(水) 14:06:41 ID:ZLC1osHk
>>4442 >>4441
まず
visible = !visible において、左辺は変数。右辺は現在の状態のtrue/falseを反転した状態となるので、おそらく点滅処理はできているのではないかと…

うーん、何がダメなのかいまいち掴めてませんが、こういう時は少し違う書き方をしてみましょうw

EventForBoss

Collision Event (Bullet)

with(other){
instance_destroy(); //当たり前ですが、ボスに当たった弾を消しておきましょう
}
if (flash_time == 0){
HP -= 1; //HP -= 1;という書き方に直しました。変数名 += x;という書き方を覚えておいてください。*=と/=も使えます。
flash_time = 50;
alarm[0] = 1;
sound_play(sndBosshit); //効果音も忘れずに…
}

Alarm0 Event

if (flash_time > 0){
flash_time -= 1;
visible = !visible;
alarm[0] = 3;
}else{
visible = true; //無敵状態が終わった時にボスが見えなくなっていては困るので、こう書いておきます。
}

…で、いかがでしょうか…?

4444名無しさん:2016/07/06(水) 22:27:06 ID:bp5PiC0g
>>4437-4438

まず揺らす処理をbossの中に書くのがいけないのではないでしょうか
画面を揺らす これで1つの機能として成り立ちます
(どんなオブジェクトに画面を揺らすコードを書いても画面自体は揺れますよね)

使いまわさないからといって無理やりコードを入れるより
1つのオブジェクトにつき1つの機能を入れるほうが良いです
(多機能にすると使う側が混乱するので)


次に一気に5回揺らそうとするからうまくいかないのかもしれません
まずは左右に画面を揺らすコードを作ってから次に5回揺らすコードを作ります
(余力があれば回数を指定できるようにすると良いです)

プログラムは段階を踏んで書いていくようにしてください


ということでやってみます
画面を揺らすだけのオブジェクトを作成します

ここでは obj_view_shaker とします

[Create Event]
view_xview[0]=20;
quake_limit=20;
quake_speed=-1

[Step Event]
view_xview[0] += quake_speed;
if(abs(view_xview[0]) > quake_limit)
{
quake_speed = -quake_speed;
}

単純に画面を揺らすコードはこれだけです
quake_speedが変わるタイミングで何かしらやってもらえれば回数制限を掛けられるでしょう

このようにすることでバグが出る可能性が少なくなっていくのです

オブジェクト1つにつき機能は1つまで 一番言いたいことはこれです
(ただしプレイヤーなどは例外ですね 強いて言うならプレイヤーの制御で1つの機能でしょうか)

4445名無しさん:2016/07/07(木) 20:25:19 ID:pnqNc/z6
>>4444
教えていただけるのはありがたいのですが…それって、見た感じ「画面を左右にゆっくり動かす」コードですよね?
違うんです…僕が書きたいのは「1フレームごとに左右に揺らす」コードなんです…

4446名無しさん:2016/07/07(木) 22:55:43 ID:bp5PiC0g
>>4445
あー分かりました

・1フレームごとに左右を切り替える
・左右の揺れ幅を段々小さくする
・揺れ幅が無くなったら再度揺らす

これを繰り返すということで合ってますか?

4447名無しさん:2016/07/08(金) 16:31:40 ID:pnqNc/z6
>>4446
そういうことですね
今は画面が右にずれず困っているところです

4448匿名キッドくん:2016/07/08(金) 16:50:51 ID:KTnHTKBQ
耐久制作についての質問です
初歩的なところで申し訳ありません

りんごを指定座標を中心にして回転させるのはどうすればよいですか?

Z2のcatastrophe耐久の開幕のくるくるしてるのとかです(放射じゃなくて出してる部分のくるくる)

4449名無しさん:2016/07/08(金) 20:21:05 ID:vkbvhDk.
またまた投稿です

4450キッドッド:2016/07/08(金) 20:23:08 ID:vkbvhDk.
↑間違えて途中でそうしんしてしまいました

耐久制作初心者なのですが、単振動のような動きはどうしたらよいでしょうか?
加速度をうまく扱うのだと思いますが…中心から離れると加速度が中心方向に大きくなる…みたいな…

4451名無しさん:2016/07/08(金) 23:27:47 ID:bp5PiC0g
>>4447

[Create Event]
quake_start = 20;
quake_attenuation = 1;


[Step Event]
if(view_xview[0] == 0)
{
view_xview[0] = quake_start;
exit;
}

view_xview[0] = -view_xview[0] + quake_attenuation * sign(view_xview[0]);

これでできるはずです

因みに
quake_start = 19;
quake_attenuation = 2;
とすると

1 -1 1 -1 1 -1 1 -1 1 -1.............

となって再度揺れないようになります

else ifで処理を追加してあげましょう

44524451:2016/07/08(金) 23:30:30 ID:bp5PiC0g
あ 違うわ

1 -1 1 -1 1 -1 1 -1 1 -1.............

ではなく永遠に値が1になります

4453名無しさん:2016/07/09(土) 12:20:50 ID:pnqNc/z6
>>4451
…これだと揺れが小さくならない気がします…僕が書きたいのは「左右に揺らしつつ段々揺れを小さくする」コードなのですが…説明不足でしたらすみません
こちらでも色々試してみるつもりですが…うーむ

4454名無しさん:2016/07/09(土) 17:53:28 ID:bp5PiC0g
>>4453
いいえ 揺れは小さくなり 0になった瞬間再度揺れるようになっています
数字を当てはめてみますとわかるかと思います

view_xview[0] = -view_xview[0] + quake_attenuation * sign(view_xview[0]);

以下 quake_attenuation = 1 とする

view_xview[0] = 20のとき

-20 + 1 * sign(20) //signとは正だと1 負だと-1 0だと0が帰ってくる関数です sinとは違う関数なので注意してください
= -20 + 1 * 1
= -19

view_xview[0] = -19のとき

-(-19) + 1 * sign(-19)
= 19 + 1 * -1
= 18

以後 -17 16 -15 14 -13 12...

4455名無しさん:2016/07/15(金) 17:36:30 ID:.6O5qB0w
トリガーに触れると動くブロックで、他のブロックとこのブロックにキッドが挟まれると死ぬような仕組みを取り入れたいのですが、うまくいきません。
どうすれば良いでしょうか。
↓これがStepイベントに入れているコードです。(他にもコードはありますが関係ないので一部抜粋の形を取りました)
今のところは調整段階なので上下に動く用のコードしか書いていません。
if(place_meeting(x,y+vspeed,player) && place_meeting(player.x,player.y+vspeed,block)){
with(player)killPlayer()
}

4456名無しさん:2016/07/16(土) 17:31:24 ID:bp5PiC0g
>>4455
う〜んStepっていうのは恐らく動いているブロックのStepですよね
プレイヤー目線で当たっているかを調べたほうがいいのではないかなと思います

どうせwithを使うのですし
with(player)
{
if(... && ...) //考えてみてください
{
killPlayer()
}
}

これでもいいような気がします

4457名無しさん:2016/07/17(日) 02:42:17 ID:hL8mq4jo
新しい事に挑戦してみようと思い、色々調べてパーティクルを使おうとしたのですが、Pro modeがどうとかのエラーが出ました。
8.0のLITEでは使用出来ないのでしょうか?

4458名無しさん:2016/07/17(日) 09:59:36 ID:bp5PiC0g
>>4457
こちらの環境でもlite版だと使えないことを確認しました
もし使いたいのであれば
pro版にするか
GameMakerStudioを使うか
のどちらかの手段をとってください

4459名無しさん:2016/07/17(日) 18:07:10 ID:hL8mq4jo
>>4458
ありがとうございます。
検討してみます。

4460名無しさん:2016/07/17(日) 18:34:25 ID:.6O5qB0w
>>4456
解決いたしました。ありがとうございます。
以下のコードをplayerのStepイベントに加えることで実行できるようになりました。
if((collision_rectangle(x-16,y-16,x+16,y,block,1,0) && collision_line(x-16,y,x+16,y+16,moveblockext,1,0)) || (collision_rectangle(x-16,y-16,x+16,y,moveblockext,1,0) && collision_line(x-16,y,x+16,y+16,block,1,0))) {
killPlayer();
}

4461名無しさん:2016/07/17(日) 19:24:09 ID:bp5PiC0g
>>4460
その書き方は良くないです

例えば
「ダッシュボタンを押すとダッシュする」
というのを実装するとき

if(vspeed == 0 && place_meeting(x, y+1, Block) && keyboard_check_pressed(ord('X')))
{
//処理
}

パッと見どういう条件かわかりません
以下のようにするとどうでしょう

var isGround;
var isDashKeyDown;

isGround = (vspeed == 0) && (place_meeting(x, y+1, Block));
isDashKeyDown = keyboard_check_pressed(ord('X'))

if(isGround && isDashKeyDown)
{
//処理
}

このように複雑な条件式の場合は
isGround や isDashKeyDown のように
どんな条件か説明するための変数を用意してあげると
このように後で見返してもある程度分かりやすくはなります

(もう少しいい例があればよかったのですが・・・すみません)

4462名無しさん:2016/07/18(月) 16:23:56 ID:vkbvhDk.
耐久制作についてです

円に並べたりんごをくるくる回すのってどうすればいいですか?

4463名無しさん:2016/07/18(月) 19:41:13 ID:/zuJ8fEU
>>4440です
>>4441-4443
ありがとうございます
できました
また質問ですが、ポロニウムエンジンやゆううつエンジンに入っている
「secretitem」を5個以上取ると消えるブロックはどう作るのですか
また、ブロックが消えたことはセーブして死んでも保存したいです
また、secretitemを10個、15個以上取ったら消えるブロックも
作りたいのでその時に支障がないようにお願いします
>>1121を参考にしたのですがうまくいきません

4464名無しさん:2016/07/26(火) 00:23:11 ID:3m5f6XyM
ゆううつエンジンでssoundを使いたいので、miniwa editionからssoundのscriptなどをひっぱってきたのですが、
死んだときにすでになっている音楽がとまらなかったり、Rキーを押しても音楽がまたなってしまったりします(2重に聞こえる)。
tempExeの仕様をいじったりしたのですが、どうもminiwa editionのようなbgmの仕様になりません。
設定の仕方がわかる方、教えてください。

4465名無しさん:2016/07/27(水) 22:33:40 ID:tTA7gy62
>>4464

とりあえずスクリプト関連からいじりましょう。
1,loadGameスクリプトの中の、game_restart();をコメント化

2,killPlayerスクリプトの中の、sound_play(sndOnDeath);をsound_play(sndDeath);に書き換える。

3,同じスクリプトに↓
world.vol = 5000
world.gmvol = world.volume
world.volct = 0
ss_PlaySound(world.Sgameover)
を追加。

musicFuntionsについては、miniwaエンジンを参考にしているようなので一応ここでは省いておきます。わからなかったら後で返信してください。

4466名無しさん:2016/07/27(水) 22:42:33 ID:tTA7gy62
>>4464
>>4465の続きです。

1,worldオブジェクトのクリエイトイベントに、↓

//ssoundDLLを使って鳴らす音楽の指定
ss_Init();

Sgameover = ss_LoadSound(working_directory+"\Musics\sakeninomareru.ogg",1);//Gameover音
Stitle = ss_LoadSound(working_directory+"\Musics\dusk.ogg",1); //タイトル画面での音楽
Sstage1 = ss_LoadSound(working_directory+"\Musics\yggdrasil.ogg",1); //Stage1の音楽
vol = 9000//10000
volume = 9000//10000
gmvol = 5000
filePlaying = -1;
を追加。(ここもminiwaエンジンの同じところにあるので参考に)

2,同じオブジェクトに、stepイベントを追加し以下を記述↓

ss_SetSoundVol(curMusic,vol)
ss_SetSoundVol(Sgameover,gmvol)
if volct = 1{

if(instance_exists(player)||instance_exists(player2)){
if vol < volume{vol += 100}else volct = 0

if gmvol > 5000{
gmvol -= 100;
}
}
}

3,同じくworldオブジェクトのroomstartイベントに記述↓

//ssound
if vol != volume{volct = 1}
musicFuntions();
ss_SetSoundVol(world.curMusic,vol)
ss_StopSound(bgm03)

if(global.music=1){sound_stop_all()}

4,同オブジェクトのf2イベントを下のものに変更↓

ss_StopSound(curMusic)
ss_StopSound(Sgameover)
//再起動
file_delete("temp");
sound_stop_all();
game_restart();

一応追加などは以上で終わりです、room状にあるplaymusicオブジェクトの中身は邪魔なので消しましょう。(二重で云々は多分これのせい)

4467名無しさん:2016/07/29(金) 21:45:36 ID:3m5f6XyM
>>4465
>>4466
できました!
ありがとうございます!

4468名無しさん:2016/08/03(水) 22:39:23 ID:Ap/w4q6o
ざっと見ましたが4000件ほどあるので全ては読めておりません
既に上記で質問があった場合はご容赦ください

ねころんエンジンで二次制作を行っているのですが、
Rooms\00init内にあるrInitとrTitleの存在の意味がわかりません。
消すと正しく動作しないのですが、開いて見てみると音を鳴らすコードしか見つかりません。
別のディレクトリ内にあるファイルが原因だと思われますが、詳しい理由がわからないので、
わかる方回答よろしくお願い致します。

4469名無しさん:2016/08/04(木) 02:08:06 ID:XKvPc1lk
rInitにはinitオブジェクトとworldオブジェクトがあると思います


initオブジェクトのコード内には
initSetGlobals();
initSetControls();
と書かれていると思いますがこの2つのスクリプトは正しく機能するために必要なものを指定してるものです(詳しくは自分で見てください)

また、initには
if (file_exists("temp.dat") == true) {
tempExe();
} else {
room_goto(rTitle);
}
とも書かれていますが、これはtemp.datファイルがあればtempExe()を実行し、無ければrTitleに行くと書かれてます
端的に言えばこのコードの意味は
リスタートした場合にはtempExe()を通してリスタートしたルームへ行き、そうでない場合はrTitleに行くということです
ゲームを開始した時ルームはrInitから始まりますが、game_restart()をした時も同様にrInitから始まります
なので、リスタートをした場合とそうでない場合で分けなければなりません。それがこのコードです。


次にworldオブジェクトですが、これがなければリスタートしたりF2でリセットをかけたりといったことができなくなります
worldオブジェクトはpersistentでroomを移動しても消えずずっと残ります

ゲームに必要な2つのオブジェクトがあるrInitは消してはいけないルームです。



rTitleはなくても動作します
initオブジェクトのroom_goto(rTitle)を別の部屋に書き換えてもゲームは動きます
rTitleはただ単純にタイトルを表示させる部屋であり、ゲームとして違和感なくみせるためのルームの1つでしかありません

4470名無しさん:2016/08/04(木) 02:08:40 ID:XKvPc1lk
すいません、4469は
>>4468
への回答です

4471名無しさん:2016/08/04(木) 17:32:47 ID:Ap/w4q6o
>>4469
>>4470
4468です。素早いご回答ありがとうございました。

44724467:2016/08/04(木) 18:04:51 ID:3m5f6XyM
もうひとつ質問です。
if文でplayerとobjAがぶつかっている間は〜 という文を作りたいのですが、
どの関数を使用したらいいのかわかりません。
教えてください。

44734468:2016/08/04(木) 22:25:20 ID:Ap/w4q6o
4468です。度々質問失礼します。
教えていただいたことの意味がやはりわからず何度も確認しましたが、
rInitにオブジェクトが存在していないようでした。二つ(?)マークがあったので、
おそらくそれぞれinitオブジェクトとworldオブジェクトだと思われます。
その(?)になってしまっている状態をどうすれば改善できるかを教えていただきたいです。
ちなみに他にも、エンジンをダウンロードして開いた初期の状態のrSelectStageのplayerStartの位置がずれていたりなどの不具合があります。
私の環境に問題があるのでしょうか…

4474名無しさん:2016/08/04(木) 23:53:47 ID:bp5PiC0g
>>4473
確かその?はデフォルトだったと思います
因みに?を変えたいのであれば
initとworldオブジェクトの画像を差し替えると?から変わりますよ
後者の現象に関してはよくわかりません・・・・・

4475名無しさん:2016/08/08(月) 23:19:58 ID:tTA7gy62
>>4472
別にそれだけならobjA側にplayerとのコリジョンイベントを作るだけでいいとは思うんですが…。
ここはif文を使うということですのでそちらを。

オブジェクト同士が触れている(衝突している)のを調べるものに"place_meeting(x,y,object)"というのがあります。
例えばobjectA側にこれを用いて書くならば↓
if(place_meeting(x,y,player)){実行したいこと}
みたいな感じです。x,yはルームの座標でもいいですし、そのままでも構いません(そのままならobjectAとplayerが一ドットでもかぶってれば実行してくれます。)

44764472:2016/08/09(火) 22:06:01 ID:3m5f6XyM
>>4475
ありがとうございます

4477名無しさん:2016/08/11(木) 20:56:23 ID:zc7VDUno
サブイメージを直接指定することはできますか?
(例えばON/OFFブロックでflag=1ならばONにする等)

4478名無しさん:2016/08/11(木) 23:21:31 ID:Aln3yfBg
>>4477
                     人
                  ノ⌒ 丿
                _/   ::(
               /     :::::::\
               (     :::::::;;;;;;;)
               \_―― ̄ ̄::::ヽ
              ノ ̄     :::::::::::::: :::ヾ,
             (         ::::::::::::::;;;;
            / ̄――――― ̄ ̄::::::::\
           (          ::::::::::::::::::::::::::::::i
           人__......::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;ノ_
         /                ,,,,;;::''''' ::::\
         (         ,,,,;;:::::::::::::::       __ ::;;i
        入        "   __ ::::  '"ゞ'-'_;;;ノ,,,,,
       /"':;;`丶___ __...,,,;:- '"-ゞ'-' ::::::..  ..............::::::::::ヽ、
      /      ''':::;;::::''''''        .....:::::::::::::::::::::::::::::::::::::l
      {;;                    ( ,-、 ,:‐、 ..::::::::::::,,,,ソ`ヽ
      i;;..           ,,,,,:::::::: '''''''           ''''''  ..;;;:l
    r´\_;;:..._,,、-‐―‐''゙゙゙        __,-'ニニニヽ    :::::::: /
    /                       ヾニ二ン"  ...::::::::::::/
    |                             ........,::::::-''゙゙
    丶、:::::::.........          _____   _______,,,-‐'''''゙゙゙
      `ー-、__ ,,,::::;;;;_,,,、-‐''''゙゙゙゙      ゙゙゙゙゙`

4479キッドッド:2016/08/12(金) 01:36:00 ID:vkbvhDk.
耐久につて質問です
才能シュレッダー(shadowlinkさんの)の途中にある円が回りながら徐々に小さくなっていくのはどうすれば良いですか?

4480名無しさん:2016/08/12(金) 02:31:21 ID:Aln3yfBg
>>4479
三角比のお勉強から始めましょうね

4481名無しさん:2016/08/12(金) 23:30:52 ID:tTA7gy62
>>4477
出来ます、できますが答えをそのままいっても意味はないので調べましょう。
"Game Maker まとめWiki"という、Game Makerの関数などのある程度の使用方法と例の書いてあるサイトがあります。
そこで"image"とだけ打ってwiki内検索をして出たものを、一通り目を通してください。
必ずそこに答えがあります。

4482名無しさん:2016/08/20(土) 01:22:53 ID:q.PfuLs2
質問です
例えですが、32×32ドットのブロックの中から32×96ドットのスプライトのオブジェ(vspeed=10)を違和感なく表示させるにはどうすればいいですか?
縦96ドットの内、上の64ドット分を表示させないでcreateしたいです

4483名無しさん:2016/08/20(土) 06:20:21 ID:inWTUayM
>>4482
縦96ドットのオブジェクトがブロックから徐々に生えてくる感じですか?それなら
①createイベントで縦の長さを3分の1に縮める
②スプライトをいじって10ドットずつ伸びるアニメーションを作る
③drawイベントでうまいことやる(draw_sprite_partなどを使う)
といった方法が挙げられます
ただし③の場合は判定の設定が少しややこしくなるので注意

4484名無しさん:2016/08/20(土) 15:49:29 ID:q.PfuLs2
>>4483
①はimage_yscaleを1/3にしてstepで伸ばしていくという事ですか?だとしたら違和感出てしまいます。
②はゴリ押し最終手段として考えましたが、やはり面倒なので他に便利なやり方があったら聞きたかったという事で質問させていただきました。
③についてはよく分かりませんので詳しく教えてほしいです。
レスありがとうございました!

4485名無しさん:2016/08/20(土) 23:50:04 ID:6FS6gNN6
>>4482
見えてしまう部分を背景タイルで隠すのはどうでしょう?
もちろんオブジェクトの当たり判定は残りますのでトリガーで生成したりする必要がありますが。

4486名無しさん:2016/08/21(日) 01:37:06 ID:q.PfuLs2
>>4485
レスありがとうございます。
背景が単色だけなら大丈夫なのですが、背景が1枚絵みたいな感じで生成場所もランダムとなるとそれでは厳しそうです・・・

4487名無しさん:2016/08/21(日) 11:07:59 ID:bp5PiC0g
>>4484
>>4483の代わりに③を答えます

draw_sprite_part(sprite,subimg,left,top,width,height,x,y)
draw_sprite_partとはleft, top, width, heightで指定した数値で元の画像をトリミングしてくれます

ですから
draw_sprite_part(sprite, -1, 0, 0, 32, 32, x, y)
と指定しますと

座標(0,0)から横に32ドット縦に32ドットの範囲でトリミングします

例としましては
top += 1;
top = top mod 64;
draw_sprite_part(sprite0, -1, 0, top, 32, 32, x, y);

とかするとスプライトが縦にぐるぐると回ります

ただこのままだとあたり判定はおかしくなってしまいますが
そこに関してはちょっと自力で頑張って貰う方向で

4488名無しさん:2016/08/21(日) 13:02:22 ID:zc7VDUno
主人公がブロックにめり込んでるとき動かす仕組みがどうしても挙動不審になります
安定した方法が分かりません

4489名無しさん:2016/08/22(月) 02:55:22 ID:q.PfuLs2
>>4487
参考にさせていただきます!
ありがとうございました!

4490名無しさん:2016/08/29(月) 12:34:44 ID:8TOLBFCc
プレイやーが突っ込んだら跳ね返る、マリオで言う横ばねを作りたいのですが
アクションコマンドのコリジョンで当たったら0度の方向に速度10で飛ばすというもの
を」作ったのですがうまくいきません
解決策をお願いします

4491名無しさん:2016/08/29(月) 18:51:08 ID:bp5PiC0g
>>4490

例えば
「プレイヤーが地面に立っている」というのは

place_meeting(x,y+1,block);

で判断できます
これはオブジェクトを指定した座標にに動かしたとき
指定したオブジェクトに当たるかどうかをみます

横バネというのは横方向に該当するオブジェクトがあればいいので
コリジョンイベントでplace_meetingを使えば問題なく動作しそうです

yuuutuエンジンにてplayerとBlockとのコリジョンイベントに
ブロックの方向によって処理を変えるものがありますのでそちらも参考にしてください
(こちらは関数がplace_freeになってますが
基本は同じものだと思ってくれて大丈夫だと思います)

4492名無しさん:2016/08/30(火) 22:37:04 ID:J5G80h/o
「今までブロックだった所が、あるトリガーに触れるとblockVisと同じ当たり判定になる」というobjectを作りたいのですが、作ってみても失敗してしまったので誰か教えてくださいm(_ _)m

4493名無しさん:2016/08/31(水) 10:29:25 ID:bp5PiC0g
>>4492
恐らくですがblockVisの処理をそのまま移植しようとしていることに問題があるのではないでしょうか
全く同じあたり判定みたいなので いっそのことblockVisにすり替えればいいのではないでしょうか?

DestroyEvent

var _inst;
_inst = instance_create(...);

//TODO:sprite_indexを消える前と同じスプライトに変える処理を追加


トリガーが触れたら
blockVisに変えたいオブジェクトを消すようにしてみましょう

4494名無しさん:2016/08/31(水) 16:47:29 ID:J5G80h/o
>>4493さん出来ました!
その発送はなかったです( ̄△ ̄;)
ありがとうございます。

4495名無しさん:2016/09/01(木) 22:37:46 ID:q.PfuLs2
耐久のバウンド弾について聞きたいのですが、
例えば足場がらぶとらSミクと同じ配置でバウンド弾を使い、
画面端の壁にだけ反射させたい場合はどうすればいいですか?
stepにbounceを入れると全てのblockで反射してしまいます

4496名無しさん:2016/09/02(金) 20:13:53 ID:pnqNc/z6
>>4495

1.画面端の壁(がどこを指してるのかちょっとはっきりしないけど)のブロックとそれ以外のブロックを別々のオブジェクトにする。ここでは前者をオブジェクトAとする。
2.バウンド弾にオブジェクトAとのコリジョンイベントを指定する。

これで大丈夫…なはず。

4497名無しさん:2016/09/02(金) 21:31:13 ID:q.PfuLs2
>>4496
出来ました!レスありがとうございました!

4498名無しさん:2016/09/08(木) 15:46:04 ID:H/ga8EwQ
質問です。アイテム関係のスクリプトがこの場合ないとします。
とあるアイテムを取得した時グローバル変数でスクリプトを使わず保存
することは可能でしょうか。出来ればオブジェクトアイテムのみで出来るとありがたいです。

4499キッドッド:2016/09/08(木) 18:54:00 ID:9RXV4FYU
基本的な質問になります。
オブジェクトのペアレンツを操るコードはあるのですか?
wiki探しても見つかりませんでした

4500名無しさん:2016/09/08(木) 19:56:00 ID:bp5PiC0g
>>4498
一応できますよ
スクリプトを使わないということは
特定のオブジェクト内でセーブの処理を書けばいいだけですので
オブジェクトアイテムのみというのがよくわかりませんが・・・・・
(セーブファイルとはまた別々でセーブということか
アイテムのオブジェクトの中だけでセーブの処理をさせるのか)

>>4499
withを使ってください
withで親のオブジェクトを指定すれば
子のオブジェクトもその通りに動きます

4501名無しさん:2016/09/09(金) 06:18:00 ID:N4DPNNSo
>>4999
「ペアレンツを操る」というのは親のオブジェクトを変更するということでしょうか?
それならobject_set_parent(ind,obj)という関数でできるはずです
indのオブジェクトの親をobjに変更するというもので
実際に試してみたところリセットしたり別のセーブデータで再起動した後も
親が変更されたままになるという性質があるようです

使い方がよくわからないのならinstance_changeあたりを使うのが無難な気がしますが...

4502名無しさん:2016/09/09(金) 10:07:09 ID:H/ga8EwQ
>>4500
教えていただきありがとうございます。
今回は妥協して別のスクリプトに無理やりぶっこんじゃいました。
なんというごり押し(´・ω・`;)

4503名無しさん:2016/09/10(土) 22:40:24 ID:bp5PiC0g
ドット絵を書くコツとかあれば教えてください

一応他のサイトも参考にしてますが情報は多いほうがいいと思ったので

4504名無しさん:2016/09/12(月) 20:23:08 ID:Shy6TwL6
>>4503
個人的に気を付ける、気を付けたいことですが、
・小さいキャラクターは分かりやすさ、特徴づけを意識すること。どっちを向いているか、形はどうか、色が背景とあまり被らないか。
・GameMakerにおいては透明色を使えるので、色を重ねてみたり、全体の明るさを意識して工夫をこらすこと。
・タイルは置いた時のことを考えて、右と左が自然に繋がるようにすること。
・床や壁のタイルは、その場所がきっちりと床や壁であることが見て分かるようにすること。
・キャラクターの縁取りをするときは縁取りの色にも気を遣うこと。キャラクターの色に応じて深い青や深い緑、灰色なども使う。茶色だと柔らかい感じになるし、表現の方法は様々。
・ナナメと濃淡の移り変わりを常に意識すること。

こんなところでしょうか…?
私はかなり自分流で、ドット絵には特に制限色を設けずに描いているので、場合によっては参考になりにくいかもしれません…w

4505名無しさん:2016/09/13(火) 19:40:17 ID:bp5PiC0g
>>4504
なるほど ありがとうございます
参考にさせていただきます

4506名無しさん:2016/09/17(土) 20:59:34 ID:JDVkhuIU
質問させていただきます。
よくアイワナの壁で使われているブロック(左右上下から触れても通過できないブロックです)があります。
これをリフトのように、プレイヤーが置いて行かれないようにするにはどうしたらよろしいでしょうか。
サイズは32*32の大きさです。

4507名無しさん:2016/09/24(土) 08:24:37 ID:K1i4bCMI
質問させて頂きます。
処理負荷防止のため、
血がブロックに付かないように
血のブロックとのコリジョンイベントを消したのですが
付いてしまいます。
どうすれば良いでしょうか?

4508名無しさん:2016/09/26(月) 12:17:29 ID:bp5PiC0g
>>4507
処理負荷防止の為に血のブロックとのコリジョンイベントを消した

とありますがコリジョンイベントを消すだけでは全く無意味です

そもそもの話
ブロックに血が付いても付かなくても(画面外に行っても)
重力の計算・描画の処理を永続的に続けますので
処理的にはほぼ変わりません

ではどうすればいいのかと言いますと
ブロックと当たった瞬間に
instance_destroy()
をすれば
インスタンスが無くなる訳ですので
上記の処理が要らなり 軽くなります

4509名無しさん:2016/10/13(木) 20:28:18 ID:HSsbQRFY
transition_black_fadeを使ってルーム移動させているのですが
各ルームごとにワープオブジェクトを作らないといけなくなってしまったので
transition_black_fadeを使いつつ普通のワープオブジェクトのようにCreationCodeに書くみたいに使い回しがきくように作ることは可能でしょうか?

4510名無しさん:2016/10/13(木) 20:32:21 ID:HSsbQRFY
>>4509
可能であればワープ時に座標を指定できたらいいです

4511名無しさん:2016/10/15(土) 11:46:18 ID:bp5PiC0g
>>4509
transition_black_fadeは
>>4034で紹介した関数のことだと思いますのでお答えします

まず準備としてルームを変えたらワープのオブジェクトは消えてしまうので
消えないようにします

endCommandを引数で渡せるようにして
transition_black_fade(time,
"
room_goto(" + string(roomTo) + ");

//キッド君の位置を決定するコード(yuuutuエンジンのroomChanger参照)

instance_destroy();
");

使い方はyuuutuエンジンと同じようになっているはずです
これでいけるかと

4512名無しさん:2016/10/16(日) 10:20:44 ID:HSsbQRFY
>>4511
レスありがとうございます。
roomChangerのroom_goto(roomTo);を
transition_black_fade(time,
"
room_goto(" + string(roomTo) + ");

instance_destroy();
");

CreationCodeにはroomTo(ルーム名)
にしたら暗くなるのですがワープしてくれません;;
どのようにすればワープするのでしょうか?

4513名無しさん:2016/10/16(日) 11:29:38 ID:bp5PiC0g
>>4512

transition_black_fadeの中身なのですが
endCommand = argument1;
になっていることを確認してみてください

8.1からは引数の数があってないとエラーが出るのですが(設定による)
8.0だとそのままエラーを出さないので

4514名無しさん:2016/10/19(水) 17:36:02 ID:knVce58I
>>4513
endCommand = argument1;にするとワープに触れても暗くならずワープもしてくれなくなりました・・・

書き忘れてました、8.0Pro使用しゆううつエンジンを使ってます。

4515名無しさん:2016/10/19(水) 23:10:35 ID:bp5PiC0g
>>4515
1.まずtimeの値はどうなっているのか教えてください
2.transition_black_fadeのupdateCommandの中身を教えてください

45164515:2016/10/19(水) 23:11:32 ID:bp5PiC0g
間違えました
>>4514への返信です

4517名無しさん:2016/10/20(木) 05:15:07 ID:vKOk8D6Y
>>4515
timeがtime = argument0;
transition_black_fadeのupdateCommandがalpha +=0.01
になってます

4518名無しさん:2016/10/20(木) 19:54:28 ID:bp5PiC0g
>>4517
あーごめんなさい
transition_black_fade(time,
"
room_goto(" + string(roomTo) + ");

instance_destroy();
");

のほうのtimeです
こっちのtimeの数字がどう設定されているかで処理が変わってくる可能性があります

4519名無しさん:2016/10/20(木) 21:30:00 ID:HSsbQRFY
>>4518
100と書きました

4520名無しさん:2016/10/22(土) 20:09:48 ID:HSsbQRFY
>>4518
timeはステップ数ではないのでしょうか?

4521名無しさん:2016/10/22(土) 20:26:50 ID:bp5PiC0g
>>4518
ステップ数で問題ないです

roomChangerで
createイベントに
isWarp = false;

collisionイベントに
if(isWarp) exit;
isWarp = true;
transition_black_fade(time,
"
room_goto(" + string(roomTo) + ");

instance_destroy();
");

こうするとどうなりますか?

45224521:2016/10/22(土) 20:39:52 ID:bp5PiC0g
また間違えました
>>4520への返信です

4523名無しさん:2016/10/24(月) 02:48:49 ID:vKOk8D6Y
>>4521
変わらず暗くなってもワープしてくれないです・・・
roomChangerのroom_goto(roomTo);を

if(isWarp) exit;
isWarp = true;
transition_black_fade(time,
"
room_goto(" + string(roomTo) + ");

instance_destroy();
");
に書き換えで合ってます?

4524名無しさん:2016/10/24(月) 06:38:50 ID:bp5PiC0g
>>4523
それであってますね

もうこれ以上になると解決策が思いつきません
こちらではうまく動作しているので
もう一回すべてのコードの見直しをしてもらうしかないようです
(自力で解決してもらうしかないです)

最後に1つ
transition_black_fadeの
updateCommand="alpha +=0.01" を
updateCommand=
"
alpha = (transitionTime - alarm[0]) / transitionTime;
"
にすると指定した時間に合わせてフェードイン・フェードアウトします

4525名無しさん:2016/10/24(月) 08:58:59 ID:vKOk8D6Y
>>4524
こちら側のなにかが間違ってるみたいですね・・・
1から書き直して試してみます。
長々と教えていただきありがとうございました。
最後に、endCommand = はどのように書いてますでしょうか?

4526名無しさん:2016/10/24(月) 14:59:26 ID:bp5PiC0g
>>4525
上で示した通り
endCommand = argument1;
ですね

引数のほうも上に書いた通りのものをいれています

4527名無しさん:2016/10/24(月) 16:05:50 ID:knVce58I
>>4526
transition_black_fadeスクリプトの
endCommand =
"

"
transition_command(createCommand, updateCommand, drawCommand, endCommand,time)

のendCommand = を
endCommand = argument1;
にするとエラーが出てしまいます・・・

4528名無しさん:2016/10/25(火) 07:00:27 ID:HSsbQRFY
>>4526
解決しました。ありがとうございました。

4529名無しさん:2016/10/27(木) 10:47:16 ID:H/ga8EwQ
GameMakerStudioでオブジェクトのdirectionをrandom(360)にしても360度ランダムにならず上か下に出されてしまいます。何が問題なのでしょうか。
a.instance_create(x,y,obj1)
a.speed=20
a.direction=random(360)

4530名無しさん:2016/10/27(木) 16:50:17 ID:H/ga8EwQ
すいません。360度拡散はなんとか解決したのですが問題が1つ。

a=point_direction(x,y,0,0)

repeat(16){
dire +=20
dx=instance_create(ボス.x,ボス.y,オブジェクト弾)
dx.sprite_index=スプライト1
dx.speed=13
dx.direction=a+dire
}

というコードで16方向に固定弾を拡散させようとしました。以下のエラーがはかれました。8.1では普通にうまくいくのにStudioのみでエラーになってしまいます。なにが原因なのでしょうか。

Variable syuremero1d.dx(100075, -2147483648) not set before reading it.
at gml_Timeline_timelinemero1_50_1 (line 4) - dire +=20

4531名無しさん:2016/10/28(金) 00:17:32 ID:bp5PiC0g
>>4530

『direって何? direなんて変数宣言してないよね』(←実際の意味合いとは違います)

8.1まででは宣言していない変数を0と扱う機能がありました(設定でエラーを出すこともできます)
Studioでは宣言していない変数はエラーを出します(↑のような感じ)

var dire = 0;
と書いてみてください(varはなくても動きます)

どこに書くかは考えてください

4532名無しさん:2016/10/28(金) 10:28:44 ID:H/ga8EwQ
>>4531
なるほど、わざわざ宣言しないとダメだったのですね。助かりました。ありがとうございます。
ただ宣言して動くようにはなったのですがなぜか1方向だけ弾が排出されません。dire = 0とすると右上部分だけ出ていないのです。綺麗に16方向に出したいのに15方向しか出ていないようです。書き方が悪いのでしょうか(´・ω・`)

4533名無しさん:2016/10/28(金) 10:32:39 ID:H/ga8EwQ
>>4532
そりゃそうだ。
割り算間違ってましたww
失礼あざしたー(´・ω・`)

4534愛罠:2016/11/05(土) 11:13:29 ID:NqFeo4PQ
LOVETrapのアイテム要素を作りたいです。
後、取ったアイテムを表示したいのですがどうすればいいですか?(engine、poroniumu)

4535愛罠:2016/11/05(土) 11:39:53 ID:NqFeo4PQ
本家みたいに、血をとばしたいのですが・・・(engine、poroniumu)

4536名無しさん:2016/11/06(日) 12:07:55 ID:HSsbQRFY
>>4534
ねころんエンジンを参考にすればいいかと思います。

4537愛罠:2016/11/15(火) 19:09:09 ID:NqFeo4PQ
trg

4538愛罠:2016/11/15(火) 19:10:38 ID:NqFeo4PQ
4537の訂正
trgでpartを動かす方法を教えてください。(poroniumu engine)

4539名無しさん:2016/11/19(土) 16:28:37 ID:W5tZffCI
>>4378
意味がよくわかりません
trgとは恐らくcreation codeでエンジンに元から入っている動く針への関数である trg を指していると思われますが、
partとは何でしょうか?
質問があいまいすぎてよくわかりませんよ

4540名無しさん:2016/11/19(土) 16:29:39 ID:W5tZffCI
>>4539
>>4538 へのミスです。すみません。

4541愛罠:2016/11/20(日) 20:46:58 ID:NqFeo4PQ
>>4579
すみません!pathです。

4542愛罠:2016/11/21(月) 21:36:43 ID:NqFeo4PQ
GAMEMakerでアイワナを作るのもいいけど、Multimedia Fusion 2で作りたくなったので、作り方を教えてください。

4543名無しさん:2016/11/21(月) 23:02:37 ID:QA4O1SVw
それはみんなで考えていこう

4544愛罠:2016/11/22(火) 22:14:27 ID:NqFeo4PQ
ある場所で死ぬ時だけに、違う死亡音を流したいのですが、どうすればよいですか?
(音の名前を、sndOnDeath2にするとして)

4545愛罠:2016/11/27(日) 16:39:34 ID:NqFeo4PQ
4538>>
訂正いたします。
trgでpathを動かす方法を教えてください。(poroniumu engine)でした。すみません^_^;
(part→path)

4546名無しさん:2016/11/27(日) 16:54:56 ID:bK7rWgdg
ペイントのテキストツールにて、
「フォント名」の選択肢の量が多い時と少ない時があるのですが、
これって日によって変わるものなのでしょうか?

4547名無しさん:2016/11/29(火) 15:27:08 ID:brLcnZ4Q
最近製作を始めた者です。ゆううつエンジンを使っています。
自機狙い弾を撃つ雑魚敵を作ろうと思い。
エンジン内の「boss_test」と「boss_item」を参考にして、

雑魚敵の方のCreateイベントに
「Set the health to 5」←HPを5に設定。
「Set Alarm 0 to 90」←90Step毎に自機狙い弾を発射。

Alarm 0イベントに
「Set Alarm 0 to 90」←継続して発射するように設定。
「Create instance of object object763 at position (x,y)」
↑object763は自機狙い弾の名前。

Collisionイベント(キッド君の弾が当たった時)に
if(flash=0){

flashobject(1,1)

sound_play(sndBossHit)
health-=1
with(other)instance_destroy()

if(health=0){
sound_play(sndDeath)
instance_destroy()
}

}

と設定して実際に配置したら。
倒せはしたのですが1体倒したら他の雑魚敵(同じオブジェクト)が
倒せなくなりました…
1個1個違うオブジェにしても無理でした。
どうすればいいのでしょうか…。長文失礼。

4548名無しさん:2016/11/29(火) 17:05:27 ID:J5G80h/o
get_integerを使って問題を出したりしたいのですが、返り値などはどのように書けばいいのでしょうか...?

4549名無しさん:2016/11/29(火) 17:53:42 ID:4IaOwWXc
>>4547
healthはゲーム中全オブジェクト共通のグローバル変数だから使わないことをおすすめする

4550名無しさん:2016/11/29(火) 18:49:40 ID:bp5PiC0g
>>4548
返り値ですね

公式によると
Returns: Real
となっています

Realはここでは実数のことですので

num = get_integer("your answer", 0);

これでnumに入力した値が格納されます

4551名無しさん:2016/11/30(水) 15:11:32 ID:brLcnZ4Q
>>4547
ありがとうございます!
healthをhpに変更したらちゃんと倒すことが出来ました!

4552名無しさん:2016/12/01(木) 18:02:35 ID:J5G80h/o
>>4550
できました。ありがとうございます!!

4553名無しさん:2016/12/04(日) 17:55:32 ID:/7qafodE
ボスを中心に楕円形に弾を出したいです。
弾の速度はどんな式で表せばいいのでしょうか?色々考えたり試したりしたんですけど、うまくいかなくて…

4554名無しさん:2016/12/04(日) 20:41:45 ID:W5tZffCI
だ円ならfor文で飛ばすやつ作って、速度つけるときに値をsinかcosでいじれば行けそう

4555名無しさん:2016/12/04(日) 20:53:41 ID:bp5PiC0g
>>4553
単純な楕円であれば
x = rx + cosθ*sx
y = ry + sinθ*sy

rx, ry:楕円の中心位置
θ:角度(円弾幕と同じ感覚で使っておk)
sx, sy:楕円の大きさ(sxとsyを同じにすると円になる)

で大丈夫です

恐らく傾いた楕円で躓いているのかと思います
これは回転行列を使うとうまくいきます

途中の計算を省いて 最終的な式は以下の通りです

x = rx + cosθ*cos t*sx - b sinθ*sin t*sy
y = ry + sinθ*cos t*sx + b cosθ*sin t*sy

rx, ry:楕円の中心位置
θ:角度(円弾幕と同じ感覚で使っておk)
t:楕円の傾き
sx, sy:楕円の大きさ(sxとsyを同じにすると円になる)

これでいいですか?
とりあえず使い方は円弾幕と同じような感じで

45564555:2016/12/04(日) 21:31:40 ID:bp5PiC0g
間違えました
x = rx + cos t*cosθ*sx - b sin t*sinθ*sy
y = ry + sin t*cosθ*sx + b cos t*sinθ*sy

ではなく

x = rx + cos t*cosθ*sx - sin t*sinθ*sy
y = ry + sin t*cosθ*sx + cos t*sinθ*sy

でした すみません

4557名無しさん:2016/12/04(日) 23:01:15 ID:/7qafodE
すみません…教えていただけるのはありがたいのですが、少々質問の仕方が悪かったようです

repeat(60){
action_create_object_motion(obj,x,y,speed,directionA)
directionA += 6
}

のspeedに変数を入れて楕円を作ろうと思っているのですが…これでは無理なのでしょうか?

4558名無しさん:2016/12/05(月) 00:06:42 ID:bp5PiC0g
>>4557

できます
ただし極座標の考え方を使わなければなりません

一応調べた感じですと
r = ((a*a - c*c)/a) / (1+c/a * cos(s));

という楕円の極座標表示がいくつかのサイトで確認できました

a:(恐らく)楕円の大きさ(これを変えるとスピードが変わります)
c:原点から焦点までの距離(恐らく縦横比が変わる)
s:方向
となり

少しパラメータが分かりにくくなります

もしやるとするやらば
上の式の値が原点からの距離になるためそのままspeedに入れることができます

speed = ((a*a - c*c)/a) / (1+c/a * cos(directionA));
action_create_object_motion(obj,x,y,speed,directionA)

因みにこの式は回転などを考慮していないと思われます
楕円の回転を考慮するとなると(少し斜めに傾けた楕円の弾幕を飛ばすとなると)
もっと式は複雑になるでしょう

・・・こちらの方法でやるのは現実的ではないかもしれません

45594558:2016/12/05(月) 00:19:29 ID:bp5PiC0g
directionAはラジアンではないみたいなので
degtoradをしないとだめですね
speed = ((a*a - c*c)/a) / (1+c/a * cos(degtorad(directionA)));

4560名無しさん:2016/12/05(月) 02:39:30 ID:/7qafodE
ありがとうございます、なるほど極座標か…その式を参考にして頑張ってみます

4561名無しさん:2016/12/05(月) 08:26:21 ID:Zp/cIq6Q
やっぱり高校数学くらいは理解してないとな

45624558:2016/12/05(月) 09:57:24 ID:XEjTMaZg
>>4560
よくよく考えてみたら楕円の回転は極座標なので
speed = ((a*a - c*c)/a) / (1+c/a * cos(degtorad(directionA+t)));

と適当な数字tを足してあげればできたなと

4563名無しさん:2016/12/05(月) 12:34:39 ID:He/aO6wU
アイワナの派生作品にある難易度セレクトステージが作れません。
調べてもわからなかったのでお願いします。

4564名無しさん:2016/12/05(月) 19:22:30 ID:bp5PiC0g
>>4563
どんな感じのセレクトステージなのか
教えてください

4565名無しさん:2016/12/05(月) 20:10:22 ID:He/aO6wU
>>4564
mediumとloadgameの二つだけです。

4566名無しさん:2016/12/05(月) 23:11:00 ID:bp5PiC0g
>>4565
すみません
難易度の種類を聞いている訳じゃなくて
デザインの話を聞いています

従来のワープに入る選択式でいいのか
それともUIを配置して選択するようにするのか

こういった話です

4567名無しさん:2016/12/06(火) 07:36:26 ID:He/aO6wU
<<4566
すみません。
ワープを使う方法です。

4568名無しさん:2016/12/06(火) 18:48:09 ID:bp5PiC0g
>>4567
ゆううつなどのエンジンは確認しましたか?
そのタイプのセレクトステージであれば
エンジンにあるので確認していただけると
分かるのではないかと思いますが・・・・・

4569愛罠:2016/12/09(金) 21:11:58 ID:NqFeo4PQ
一定時間、水に入っていると死ぬ、水オブジェクトの作り方を教えてください。(poroniumu edition)
または、そのオブジェクトが入っているengineなどがありましたら、ご報告お願いします。

4570名無しさん:2016/12/18(日) 03:14:35 ID:K0fTZ7oE
>>4569
playerオブジェクトのcreateにiki=60
playerオブジェクトのstepにif(player.iki==0){killPlayer()}
playerオブジェクトのstepにif(place_meeting(x+1,y,objwater)==false || place_meeting(x::::........
objwaterのplayerとのコリジョンイベントに:::::..........
:::::::::::::::::...............
;

4571名無しさん:2016/12/18(日) 05:24:12 ID:QQzb/nVo
全体にimage_alphaをかけた黒背景を置いているのですが、
(image_xscale,image_yscaleを用いて1ピクセルを引き伸ばしている)
player周辺だけそのimage_alphaを薄くすることは出来るでしょうか?

4572愛罠:2016/12/21(水) 10:13:22 ID:NqFeo4PQ
>>4570
すみません。playerオブジェクトのstepにif(player.iki==0){killPlayer()}と書くところまではいいんですが、
playerオブジェクトのstepにif(place_meeting(x+1,y,objwater)==false || place_meeting(x::::........と書くとエラー
がでて、出来なくなってしまいます。
後、objwaterのplayerとのコリジョンイベントに:::::..........
:::::::::::::::::...............
;
と、書いてありますが、コリジョンイベントにいったい何のオブジェクトを設定していいのか分かりません。
そこを教えていただければ幸いです。

4573名無しさん:2016/12/21(水) 19:00:52 ID:W5tZffCI
何 故 そ の ま ま 書 い た し

4574名無しさん:2016/12/21(水) 21:51:35 ID:bp5PiC0g
>>4571
8.1以前でliteの場合は恐らく実装は不可能です

8.1以前でproの場合はsurfaceで
studioの場合はshaderで対処できます



詳しく聞きたいのであれば現在のGameMakerのバージョンを教えてください

45754574:2016/12/21(水) 21:58:42 ID:bp5PiC0g
>>4571
あ 重要なことを聞くのを忘れました
どういう感じで薄くしますか?

プレイヤーを中心に円形に薄くするのか
プレイヤーを中心に四角形に薄くするのか

ここも合わせて答えてください

4576名無しさん:2016/12/22(木) 05:49:36 ID:QQzb/nVo
>>4575
レスありがとうございます。
円形です。

4577名無しさん:2016/12/22(木) 05:50:43 ID:QQzb/nVo
連投済みません
バージョンは8.0 Liteです
関係ないかもしれませんがエンジンはporoniumuです

4578名無しさん:2016/12/22(木) 09:30:52 ID:W5tZffCI
liteだと実装きついので常にプレイヤーが中心に来るような穴をあけた黒い四角を使えば良いかと

4579名無しさん:2016/12/22(木) 13:39:48 ID:QQzb/nVo
>>4578
返答ありがとうございました。
容量が大きくなりそうなのでやめておきます。

4580愛罠:2016/12/22(木) 15:44:51 ID:NqFeo4PQ
>>4573
すみません。GMLよくわかんなくて><

4581名無しさん:2016/12/22(木) 16:09:02 ID:JkDbLzF.
愛罠さんだ

4582名無しさん:2016/12/25(日) 23:05:47 ID:bK7rWgdg
パスワードのget_integerで、
例えば6666と打つとdeliciousFruitが右に動く
とするにはどうすればいいのでしょうか?

4583名無しさん:2016/12/26(月) 09:17:06 ID:IuKkIhYY
>>4582
「もし、get_integerが6666ならば、右に動かす。」
というようなif文で簡単に作ることができます。

4584名無しさん:2016/12/26(月) 12:11:47 ID:.FbjYnHk
if(get_integer() == "6666"){
//右に動かす
}

4585名無しさん:2016/12/29(木) 23:12:29 ID:J5G80h/o
>>4465

4586名無しさん:2016/12/29(木) 23:15:46 ID:J5G80h/o
>>4585すいませんミスりました;;
ssoundを使いたく、miniwaエンジンのスクリプトなどを移植して>>4465の設定もしたのですが、BGMを鳴らす仕組みと方法が分かりません(><)誰かわかる方がいたら教えてくださいm(_ _)m

4587名無しさん:2016/12/30(金) 19:37:15 ID:tTA7gy62
>>4586
miniwaエンジン事態は普通に動く感じですかね?Lite版なら使えないので…。

ssoundDLLでBGMを流すようにするには二つのやることがあります。
一つ目がスクリプトの追加(musicFuntions)、二つ目がworldオブジェクトに流したい音楽自体の設定(>>4466)

1.
miniwaエンジンのスクリプトに"musicFuntions"があると思います。
ここでは、どのroomでどの音楽を流すかを指定します。↓
switchとcase文に関しては"Game Maker まとめWiki"に詳しく書いてありますが、簡単に言えばif文と考えていただければokです。

switch(room) { //なんという変数に対するif文か
case rTitle: //どのルームで音楽を流すか
case rMenu:
case rSelectStage:
if filePlaying != 1 {
ss_StopSound(curMusic);
filePlaying = 1; //ここは音楽ごとに追加(breakとなっている下に同じような分があると思いますが、ここは数字に+1する)
curMusic = Stitle;//worldオブジェクトのクリエイトイベントに書いた、どこにある音楽を流すかの指定
ss_LoopSound(curMusic)
}
break;

基本的にこれを書くことで音楽を流す部屋と、その部屋の音楽を指定します。

2.
>>4466に書いてある、"ssoundDLLを使って鳴らす音楽の指定"とは
そのままの意味でどこのファイルにあるなんという音楽を流すか? です。

worldオブジェクトのクリエイトイベントにこんなことが書いてあると思います。↓
Sgameover = ss_LoadSound(working_directory+"\Musics\S001.ogg",1);
Smain = ss_LoadSound(working_directory+"\Musics\S000.ogg",1);
Sstage1 = ss_LoadSound(working_directory+"\Musics\S002.ogg",1);
これらはそれぞれ、上から
Sgameover=死亡時に流れる音 / Smain=タイトル画面や難易度選択で流れる音楽 / Sstage1=例えばStage1で流す音楽
となります。(ここで"="の前にある文字がmusicFuntionsの"curMusic"にそれぞれ入る)
つまりはこんな感じです。↓

流したい音楽のあるStageの名前 = ss_LoadSound(working_directory+"\流したい音楽があるフォルダの名前\流したい音楽.ogg",1);
(音楽ファイルはogg形式のほうが容量が軽いのでよく使われます。)

わかりづらいと思うのでこんな感じ、っていうエンジンをここに上げると思います。

4588名無しさん:2016/12/30(金) 19:58:02 ID:tTA7gy62
>>4586
>>4587

DL先にもありますが見る場所はその二つです。(URL最初にhを入れてください)
ttps://www.axfc.net/u/3758845.zip

4589名無しさん:2017/01/07(土) 02:35:35 ID:/7qafodE
以前極座標云々で質問をした者です。(>>4553)
あれからいろいろ試してみましたが、うまくいきませんでした…。
まず教えていただいた式は「原点が焦点の一つとなる楕円」の式のようだったので、自分で頑張って調べて、原点が中点となるよう式を立てなおしてみました。するとゼロ除算になるはずのないこの式↓

sqrt( 4 / ( 4 * cos( degtorad(directionA) )^2 + sin( degtorad(directionA) )^2 ) )

がゼロ除算になったり、負の数になるはずのないcossin↓

cosa=cos( degtorad(elly2) )
sina=sin( degtorad(elly2) )
cosb=cosa^2
sinb=sina^2
cossin=4*cosb+sinb
speedA=sqrt(4/cossin)

が負の数になったり、そもそも速度は一つ一つ違うはずなのに一定個数ごとに速度が切り替わったり(法則も不明)…
念のためExcelでも計算してみた所、こちらはちゃんと楕円になるようでした(多分)。
他にも楕円の大きさを倍にしてみたりなど、やれることはすべてやったつもりです。一体何が間違っているのか教えてほしいです。もしくは、>>4557の方法で楕円を作ってくださる方がもしいらっしゃれば、是非コードを見せていただけると非常に助かります。
もう限界…。

4590名無しさん:2017/01/07(土) 02:36:15 ID:/7qafodE
>>4589訂正:elly2→directionA

4591名無しさん:2017/01/07(土) 19:26:07 ID:bp5PiC0g
>>4589
以前の回答では action_create_object_motionの引数である
speedの値を計算したいということだったので極座標表示(>>4558)を紹介したのですが
「原点が焦点の一つとなる楕円」の式だったというのは気づきませんでした すみません

で やはり楕円を飛ばすのであれば>>4556の式のほうが扱いやすいのはないかと

ということで>>4556の式を使ってちょっと書いてみました

var rx, ry, t, sx, sy;

rx = room_width /2; //楕円の原点 x
ry = room_height/2; //楕円の原点 y
t = degtorad(20);   //楕円の傾き
sx = 5;         //楕円の大きさ x
sy = 1;          //楕円の大きさ y

var i;
for(i = 0; i < 360; i += 9)
{
var _i;
_i = degtorad(i);

var _hs, _vs;
_hs = cos(t) * cos(_i) * sx - sin(t) * sin(_i) * sy;
_vs = sin(t) * cos(_i) * sx + cos(t) * sin(_i) * sy;

var _obj;
_obj = instance_create(rx, ry, object1);
_obj.hspeed = _hs;
_obj.vspeed = _vs;
}

このように横方向のスピードと縦方向のスピードを
それぞれ計算してやるほうが楽ですね

4592名無しさん:2017/01/07(土) 20:39:05 ID:/7qafodE
>>4591
この式↓できれいな楕円が出来ました!ありがとうございます!!

a=cos(degtorad(0))*cos(degtorad(elly2))-sin(degtorad(0))*sin(degtorad(elly2))*2
b=sin(degtorad(0))*cos(degtorad(elly2))+cos(degtorad(0))*sin(degtorad(elly2))*2
xx=instance_create(x,y,Boss3_exp2)
xx.hspeed=4*a
xx.vspeed=4*b

あと^が乗算ではなく排他的論理和だったことに今更気づきました…どおりでエラーを返されるわけだ…

4593名無しさん:2017/01/08(日) 15:24:19 ID:A4MZOYPA
>>4587>>4588
ありがとうございます。よくわかりました<(_ _)>

4594名無しさん:2017/01/11(水) 20:40:04 ID:zc7VDUno
キャラを左右に向き反転させたいのですが単にimage_xscale=-1とすると
位置がズレてしまうのである位置を保ったまま反転させることはできませんか?
反転させたスプライトを用意するのは奥の手として考えてます。

4595名無しさん:2017/01/12(木) 05:10:59 ID:QQzb/nVo
>>4594
image_xscale=-1にして
x座標をそのスプライト分変えてやれば
良いのではないのでしょうか?

4596名無しさん:2017/01/12(木) 08:04:41 ID:RmsFp.fc
>>4594
スプライトのoriginは中央に合わせていますか?

4597名無しさん:2017/01/12(木) 22:00:03 ID:bp5PiC0g
>>4594
逆に反転させたスプライトを用意するのはアリです
スプライトを反転させてその反転したスプライトのワンポイント変えるだけでも

右向きと左向きで微妙に違う → 凝っている

という印象を持たせられます
本当に反転させるだけでいいのかよく考えてみてください

4598名無しさん:2017/01/13(金) 17:06:30 ID:tc6zcq5c
IWBTG:Gaidenのバイオニック アーム(grapple)の作り方を教えて下さい

4599名無しさん:2017/01/13(金) 17:10:23 ID:tc6zcq5c
>>4598
ttps://forums.tigsource.com/index.php?topic=46254.0
を参考にしたのですが難しくてできませんでした

4600名無しさん:2017/01/14(土) 20:45:00 ID:zc7VDUno
>>4595
>>4596
有難うございます!
また新たな知識が増えました、ご教示有難うございました。

4601名無しさん:2017/01/15(日) 20:26:00 ID:bp5PiC0g
>>4598
とりあえず 分からない部分というのは
振り子運動ができないということでよろしいですか?

4602名無しさん:2017/01/16(月) 18:40:26 ID:w1n2FM4A
>>4601
はい。
gmc.yoyogames.com/index.php?showtopic=536054
のように振り子の振り幅や速度が変わるものではなく,
一定のものを作りたいです。

4603名無しさん:2017/01/16(月) 22:47:24 ID:bp5PiC0g
>>4602
長文注意

はい まず今回紹介するのは「それっぽく」見せるためのものです
厳密な計算をしたいのであれば 他のサイトを探し回ってください

まず必要な情報は

(1).引っかかった位置
(2).振り子末尾の初期位置
(3).速度

これだけでそれっぽい動きができます
今回は手順を紹介します


手順1 まずは(1)と(2)の距離を出してください
手順2 次に振り子の速度が0になる場合の角度を出します ここは実際にコードを載せます
//origin(x ,y) -> (1)の座標
//tail (x, y) -> (2)の座標

//(1)から(2)のベクトルを作成
_x = tail.x - origin.x;
_y = tail.y - origin.y;

//角度を算出(結果はラジアン)
_dir1 = arctan2(_y, _x);
_dir2 = arctan2(_y, -_x);


手順3
手順2のコードをまるまる写した場合 180度から360度は マイナスの角度になります(-180度から0度になる)
if文で直してください


手順4
このままでは_dir1, _dir2が0度から180度だった場合
真っ逆さまな動きをします
_dir1と_dir2を比較して値が低いほうに円1周分 足してみてください
(ただし180度から360度の場合は足さないでください)


手順5
振り子の一番端が一番遅くなり ちょうど振り子の真ん中が一番速くなるのはご存知だと思います
この動きを表現する方法と言えば

sinを使うとそれっぽくなるでしょう
1 -1の場合が一番変化が小さく ちょうど0の場合が一番変化が大きくなります

_dir1, _dir2の中間を取るにはlerpを使うと良いです
pro版ではないと標準のlerpは使えませんが以下のような計算式になっています
lite_lerpとしてスクリプトを作っておきましょう

///lite_lerp(s, e, t)
return argument0*(1-argument2)+argument1*argument2;

これを使って現在の振り子の角度を求めます
(3)の速度はここで使います


手順6
後はここまでくれば楽です
円弾幕を使うように

tail.x = origin.x + cos(現在の角度) * 距離;
tail.y = origin.y + sin(現在の角度) * 距離;


これでそれっぽい振り子運動の基本的な動作を終わります

4604名無しさん:2017/01/17(火) 18:31:33 ID:w1n2FM4A
>>4603
上手く出来ました!
ご丁寧にありがとうございます。

4605名無しさん:2017/01/24(火) 21:57:32 ID:/7qafodE
また詰まってしまいました…今度は斜めの床が作れなくて困っています。
Nikaple Edition v1.2からスクリプト等をコピペして少し弄って、坂をスムーズに降りる所までは出来ました。
しかし、スクリプト中の「block2」「onblock」が何を表しているかが分からず、うまく坂を登ることが出来ませんでした。
一応>>152を使えば登れるようになるとは思いますが、もうNikaple Editionからコピペしてしまっていて、>>152をそのまま使うとムダが生じてしまうので、あまり使いたくないのです。
どこをどう弄れば坂を登れるようになるのでしょうか?ちなみにゆううつエンジンを使っています。

4606名無しさん:2017/02/04(土) 21:47:08 ID:/7qafodE
自己解決してしまいました…斜め床の親用のオブジェクトの親を<no parent>にしたら解決しました
スクリプトばっかり見てた…もっと視野を広く持つべきでしたね、精進します

4607名無しさん:2017/02/25(土) 23:39:18 ID:LFlxf28M
すいませんアイワナ系が作りたいわけではないのですが
ゲームメーカースタジオについて気軽に質問できそうな掲示板が他に見当たらないので質問します
自分は横スクロールのSTGゲームを作ろうとしているのですが
自機の弾を左右のみに発射させたいのですけど今弾の設定で自機の方向を読み込んでその方向に弾が発射されるようにしているのですが
上下や左上や右上に移動しているときに弾を撃つと
上下や左上や右上に発射されてしまうんです。
左右のみにするには自機の方向設定を左右のみにすればいいと思いますが
そのやり方が自分で色々試してみてもわかりません。よろしければどなたかアドバイスをください

4608名無しさん:2017/02/26(日) 22:32:08 ID:TuSV8M6.
>>4607
自機の方向はdirectionで調べているのでしょうか。それともimage_angleなどでしょうか。
左右どちらに進んでいるか分かればよいだけならhspeedで判定するのはどうでしょう。
hspeedの値が0より小さいなら左、0より大きいなら右、0なら停止のように。
これならたとえ斜めに進んでいるとしても、それはvspeedに値があるかどうかであって
hspeedの値は変わりませんので問題ないかと思われます。
的外れな回答であるなら、ご指摘ください。
その際には自機の方向というのが変数でいうところのなんなのか、今記述している処理内容など詳しくお教えくださると回答しやすくなります。

4609名無しさん:2017/02/26(日) 22:58:59 ID:LFlxf28M
>>4608
ありがとうございます
hspeedで判定してみましたらなんとか解決できました

4610ども・・・初カキコ・・・:2017/03/03(金) 20:04:34 ID:PsWG3TnA
指定のobjectのみ反射して上下移動する水objectを作りたいのですが上手くいきません。
使用エンジンはerunatyan edition classicです。
こんな感じのcodeにしたのですが↓

縦に移動する水のobject名はobjwater2tate

create event で Start moving in a direction self↑ に設定
step event で Bounce against solid objects self で not precisely solid againstに設定
Player collision event で if(player.vspeed > 2) {player.vspeed = 2;}
objwater2tate collision event で other.vspeed=-vspeed
にしました。
次にobjwater2tateを反射させる為のobjectです
object名はsolidHanshaです。
create event で if(objwater2tate.y<=32-y||
objwater2tate.y>=32-y){
objwater2tate.vspeed=-objwater2tate.vspeed
}
にしました。
このobject以外にも接触しても水が反射してしまいます。どうすればいいでしょうか?
長文すみません。

4611ども・・・初カキコ・・・:2017/03/03(金) 20:08:33 ID:PsWG3TnA
乱文すぎましたね・・・
例えで言えばI wanna be the butterflyの水ステージのギミックを再現したいのです。

4612ども・・・初カキコ・・・:2017/03/03(金) 20:52:23 ID:PsWG3TnA
すみません、事故解決しました。

4613名無しさん:2017/03/03(金) 21:28:36 ID:GW9vRWGg
狂ってる?それ褒め言葉ね

4614名無しさん:2017/03/24(金) 18:09:51 ID:noZS8OEs
メドレーアイワナを作ろうと思うのですがカミリア3で使われているアイワナは製作者さんに許可とる必要ありますか?

4615名無しさん:2017/03/25(土) 10:00:10 ID:bp5PiC0g
>>4614
逆になんで許可取らないで作っていいと思った?

readmeに「許可を取らなくても使っていいよ」みたな事が書いてあったら別だが
別のアイワナに使われてても普通は許可とるべきだろう

4616名無しさん:2017/03/25(土) 10:56:41 ID:jaOdyyrU
自分のアイワナから許可なく勝手にステージ流用やボス流用されてるのをたまたま動画とかで見つけてびっくりすることがある
でも気にしてないよ

4617名無しさん:2017/03/25(土) 19:32:10 ID:bp5PiC0g
>>4616
みんながみんな気にしていないか といえば
そうとは言い切れないんで

やっぱり一回は許可を取るべきだと思う

4618名無しさん:2017/03/26(日) 01:10:43 ID:ejUL5BjA
>>4614
許可とるのは当然なんだよなぁ…、ていうか最近その話よく見かけるんだけど
そのたびに注意勧告されてる方がいるんだよね

許可取るのがめんどくさいのかって思うほど人にその質問しまくってる

4619名無しさん:2017/03/26(日) 20:55:26 ID:Vr6RC/9E
>>4615
>>4618
わかりました。
許可はとるようにします。
当然のような質問してしまい、すみませんでした。

4620名無しさん:2017/03/27(月) 10:54:28 ID:W5tZffCI
一応キルカミ3はそれぞれ作者から許可貰ってたはず

4621名無しさん:2017/03/27(月) 10:56:43 ID:as24dBDs
でも、耐久ボス作る時にねころんさんに許可とる風潮あったよね
今はもうないだろうけど

4622名無しさん:2017/03/28(火) 08:31:25 ID:AvwhPA2.
>>4621
それは聞いたことないですね…
大昔にサイバーさんが自分以外が作った大佐ボス見て腹たってたって話は聞きましたが

4623名無しさん:2017/03/28(火) 08:36:51 ID:SjeD89H6
>>4622


4624名無しさん:2017/03/28(火) 14:50:00 ID:/7qafodE
ゆううつエンジンについて質問があります。
滑る床に着地した後左右に移動できないことがあります(大抵着地しなおすと治る)。原因が分かりません…もし直せるのなら直したいのですが、可能なのでしょうか…?

4625名無しさん:2017/03/28(火) 16:16:40 ID:ZtJ/cC0M
>>4624
コード見ないとどこがおかしいのかがわからないです
コードを提示してください

4626名無しさん:2017/03/28(火) 16:46:35 ID:/7qafodE
>>4625
特に何も弄ってないので、提示する必要は無いと思ったのですが…もしかして斜めブロックを作るために別のエンジンからコピペしてきたこれ↓が原因なのでしょうか…?

End Step:

wx = x;
wy = y;
wxpre = xprevious;
wypre = yprevious;
wSpeed = vspeed;

if(vspeed>0){
hosei=vspeed+1;
}

else{
hosei=0;
}

if(place_meeting(x,y+hosei,block2) == true ){
x = xprevious;
y = yprevious;
move_contact_solid(point_direction(xprevious,yprevious,wx,wy),-1)
vspeed = 0;
gravity = 0;
if(place_meeting(x,y+1,nnmparent) == true){
if(place_meeting(wx,y-3-maxSpeed,nnmparent) == false){
x = wx;
y -= 3;
move_contact_solid(270,10);
}
}
}

(メッチャ長いので省略)

4627名無しさん:2017/03/28(火) 16:49:05 ID:/7qafodE
連レス失礼します…一応本当に何も弄っていないエンジンで試してみたところ、やはり左右に動けなくなることがありました。
なので>>4626のコードは関係ないようです…

4628名無しさん:2017/03/28(火) 17:35:32 ID:Flmqbzz.
>>4627
恐らくslipblockのことですよね?
こちらでは何もいじっていない状態で数回か試しましたが
そのような現象は見られませんでした

因みにGameMakerのバージョンは何でしょうか

4629名無しさん:2017/03/28(火) 19:44:41 ID:/7qafodE
>>4628
8.0Proです

4630名無しさん:2017/03/28(火) 23:23:10 ID:bp5PiC0g
>>4629
一応8.0でも確認したのですが やはりだめでした
ちょっと嫌な予感が・・・・・



もう1つ質問いいですか?

OSは32bitでしょうか?
コントロールパネルのシステムから確認してみてください

46314630:2017/03/28(火) 23:26:37 ID:bp5PiC0g
だめというか 現象が見られなかったです

46324630:2017/03/29(水) 14:47:56 ID:bp5PiC0g
よくよく考えたらOSが32bitかどうか関係なかったわ・・・・・
質問に答えなくて大丈夫です

4633名無しさん:2017/03/29(水) 20:34:07 ID:/7qafodE
一応状況説明を追加しておきます…動けなくなる時の大半は「一定の高さから滑る床の端の方に着地した時」です。もし床の中央辺りでしか試していない場合は端の方も試していただけると助かります

46344630:2017/03/30(木) 11:44:34 ID:bp5PiC0g
>>4633
一応中間報告です(かなり長文になりました)
厳密なテストを行いました

<テスト内容>
画面中央からプレイヤーを落とし、ブロックの上に着地をしたら、数フレーム間だけ左(または右に)歩かせます
そのときにx座標に変化があれば成功、変化がなければ失敗としました

(因みにキッド君の歩かせ方ですが、 playerのstepの
var L,R,h;

//左右のキー入力のチェック
L = keyboard_check_direct(global.leftbutton);
R = keyboard_check_direct(global.rightbutton);

//右ボタンを押していれば右
//右ボタンを押していない状態で左ボタンを押していれば左
h = R;
if(h == 0){
h = -L;
}

//frozenに値が入っていれば行動禁止
if(frozen == true){
h = 0;
}

ここの部分をコメントにしておいて playerのcreateの部分にh = 0と書いておき、
テスト用のオブジェクトに

player.h = 1

とすることにより、自動で走らせています)

これを1ドットずつずらして約2万通りのテストをしたのですが、特にバグは見つかっていません
(自分で書いたテスト用のコードが間違っていなければの話ですが・・・・・)

一応テストは継続して
左か右におしっぱの状態でブロックに突入したときに動くかどうかなどといったテストもする予定です

46354634:2017/03/30(木) 11:45:29 ID:bp5PiC0g
(続き)
以下 今回書いたテスト用のコード
///create event
_maxHeight = 500;
_player = instance_create(room_width/2, 16, player);
_block = instance_create(room_width/2+4, 32, slipblock ); //ぎりぎりplayerが落ちない位置(?)

// <state>
// player falling -> 1
// player running -> 2
_state = 0;

//1フレームだけ遅らせないとstep内のif文で誤検知する
alarm[0] = 1;
file_delete("log.txt");



///alarm 0 event
_state = 1; // player falling



///alarm 1 event
_f = file_text_open_append("log.txt");
file_text_write_string(_f, "block pos -> (" + string(_block.x) + ", " + string(_block.y) + ") : ");

if(_player_xStart == _player.x)
{
file_text_write_string(_f, "error");
}
else
{
file_text_write_string(_f, "success");
}
file_text_writeln(_f);
file_text_close(_f);


with(_player){ instance_destroy(); }

//新しいインスタンスに変えたほうが公平な判断ができると思ったから
_player = instance_create(room_width/2, 16, player);


_block.y += 1;
if(_block.y > _maxHeight)
{
_block.x -= 1;
_block.y = 32;
}

_state = 0;
alarm[0] = 1; //1フレームだけ遅らせないとstep内のif文で誤検知する


///step event
if(!instance_exists(_player) && _state != -1)
{
//全テストが終了
sound_play(snditem); //結構長いので終了時に音を鳴らす
_state = -1;
show_message("finish");
}

if(_state == 1) // player falling
{
if(_player.sprite_index != sprPlayerIdle) exit;

_state = 2;
alarm[1] = 20;
_player_xStart = _player.x;
}
else if(_state == 2) // player running
{
//-1 ... 左方向に進む
// 1 ... 右方向に進む
_player.h = 1;
}

4636名無しさん:2017/03/30(木) 17:31:57 ID:ejUL5BjA
GMKをLiteからProにしたいのですけれどどうも毎回起動するときに「Failed to load Softwrap.dll」というのが出て、
プロ版をインストールしているというのにLiteで立ち上がってしまうんですけれどどうすればProでGMKを使えるようになるのでしょうか?
ちなみにPro版のインストーラーはあります

4637名無しさん:2017/03/30(木) 20:16:42 ID:/7qafodE
>>4635
わざわざ調査していただきありがとうございます。もう少し詳しく状況を調べて書くべきでした…

・x=32の位置にCreation codeを持たないslipblockがあり、その右側には何もない
・playerのx座標が64

この状況でslipblockに着地すると、高さに関係なく動けなくなるようです。…これは複数人で調査する必要がありそう…

46384634:2017/03/31(金) 17:32:16 ID:bp5PiC0g
>>4637
とりあえず指定通り
playerとslipblockを置いてみましたがこちらではやっぱり確認できませんでした

4639名無しさん:2017/04/05(水) 03:41:02 ID:ugQS7pkQ
質問です
1つのオブジェを除いて他の全オブジェのスピード、イメージスピードを一気に止めるにはどうすればいいですか?
1つ1つのオブジェにif文でspeed=0にするのは手間が掛かるのでやり易い方法を教えてください

罠ゲなどでポーズを押した時にメッセージウインドウを出さずに全てを止めたりするやつです。
その際に特定のオブジェを動かしたりしたいです。

4640名無しさん:2017/04/05(水) 17:28:15 ID:Flmqbzz.
>>4639
1つはrootというオブジェクトを作り
全オブジェクトの一番上の親がrootになるようにします


例:

(child → parent)
1. blockFall → platform → block → root

2. player → root

このようにすると
with(root)
{
speed = 0; //全てのspeedが0になる
}





もう1つは止めるオブジェクトを登録してやるパターンです
(もっといいやり方がありそうですが...)

stopObj[0] = player;
stopObj[1] = blockFall;
.
.
.

for(var i = 0; i < stopObj_len; i++)
{
width(stopObj[i])
{
speed = 0;
}
}

こんな感じすかね

4641名無しさん:2017/04/05(水) 23:44:14 ID:GZhTLqVU
>>4639
除く1つのオブジェクトを仮にobj_kariとすると

with(all){//全てのインスタンスにおいて
if(object_index == obj_kari){//自分の持っているobject_indexの番号がobj_kariと同じなら
//なにもしない
}else{//そうでないなら
speed = 0;
image_speed = 0;
}
}

以上を止めたいタイミングで実行すれば止めることはできるかと思います。
が、再開させるコードは別に必要です。
変数に停止前のspeedを置いておき再開時に入れなおすとか…。

4642名無しさん:2017/04/06(木) 00:12:34 ID:bp5PiC0g
>>4641
allなんてあったのか
知らんかったわ・・・・・

4643名無しさん:2017/04/06(木) 02:26:47 ID:ugQS7pkQ
>>4640
>>4641
レスありがとうございます。
playerなどにはgravityがあったり、アラームが発動中のオブジェがあったりする場合もsleep時みたいにキッチリ止まりますでしょうか?
レスを参考に色々試しましたがどうも上手くいきません・・・

少し例を変えてしまって恐縮ですが、
ttps://www.youtube.com/watch?v=DxhRes2_xww
この動画の3:04くらいのハートオブジェだけが動くみたいなやつです

4644名無しさん:2017/04/06(木) 12:17:22 ID:bp5PiC0g
>>4643
alarmを止めるのであれば

1.単純にstepの中に

if(!global.pause) exit;

var i;
for(i = 0; i <= 11; i += 1)
{
if (alarm[i] > 0){ alarm[i] += 1; }
}

2.配列を使って・・・
//ポーズ時
alarm_array = 0;
var i;
for(i=0;i<=11;i+=1)
{
alarm_array[i] = alarm[i]);
alarm[i]=-1;//こっちは切っておく
}

//ポーズ解除
if(!global.pause) exit;

var i;
for(i=0;i<=11;i+=1)
{
alarm[i]=alarm_array[i];
alarm_array[i] = -1;
}

参考URL
ttps://forum.yoyogames.com/index.php?threads/pause-alarms.3640/
ttps://www.reddit.com/r/gamemaker/comments/395yin/can_i_paused_the_countdown_of_built_in_alarms/

4645名無しさん:2017/04/07(金) 02:57:28 ID:ugQS7pkQ
>>4644
レスありがとうございます
そうなるとやはり1つ1つのオブジェに書かなくては無理ですか?

4639で書いた様に、もし可能ならば1つ1つに書かないで、parent役の1個のオブジェで全体を止めて、
止まってる時に動かしたい特定のオブジェだけに何かコードを書く、という事が理想なのですが・・・

4646名無しさん:2017/04/07(金) 10:02:10 ID:bp5PiC0g
>>4645
>>4644 の2の方法ですとstepに書く必要がないんで

with(all)
{
alarm_array = 0;
var i;
for(i=0;i<=11;i+=1)
{
alarm_array[i] = alarm[i]);
alarm[i]=-1;
}

}// with(all)

こう書けばいけますね
もしds_listを使えるのであれば使ったほうがメモリが抑えられます

この調子で
speed
direction
gravityもこんな感じにすれば行けるはず

4647名無しさん:2017/04/07(金) 18:37:11 ID:ugQS7pkQ
>>4646
なるほど、分かりました。今まで書いて頂いた物を全て参考にさせていただきます。
お付き合い頂きありがとうございました。

4648水晶:2017/04/17(月) 18:27:09 ID:PJN/Zt4Y
さくらんぼを背景が動くほうのsky highの、白黒くるくるのとこみたいなものを作りたいのですがどうすればいいのかわかりません、使用エンジンはゆううつエディションです

4649名無しさん:2017/04/18(火) 02:47:09 ID:yZY7a.Aw
>>4648
これ↓を参考に、半径も増やしていけばできます。
>>333

4650水晶:2017/04/18(火) 20:41:34 ID:PJN/Zt4Y
>>4649
レスありがとうございます、一つのオブジェクトにまとめたいです、まとめてできてはいるのですがある程度進むと中心に戻って行ってしまいます、splitobjectでリンゴをだして、そのリンゴのstepイベントに
direction+=1
と書き込んでいます、何がいけないのでしょうか

4651水晶:2017/04/18(火) 22:45:53 ID:PJN/Zt4Y
あと、F8キーを押したときに違う部屋に行くようにはどうすればできますか?

4652名無しさん:2017/04/19(水) 14:08:17 ID:UfLrKmLE
>>4651
①worldオブジェクトを開き
②EventsからAdd Eventを押下
③Key Pressを押下
④Function keysにカーソルを合わせてF8を選択
⑤ActionsにcontrolからExecute Codeを選択
⑥Execute Codeに以下のコードを書く

※yuuutuEnginの基盤を使用

roomTo=xxxx(ここに移動したい先のルーム名を指定)

if(room != rInit && room != rMenu && room != rSelectStage && room != rTitle){
if(global.death=0){
global.grav=0
room_goto(roomTo);
with(player){
instance_destroy();
}
with(player2){
instance_destroy();
}
}
}

以上でできると思います。

4653名無しさん:2017/04/20(木) 05:51:05 ID:yZY7a.Aw
>>4650
作り出したリンゴにdirection+=1と書くことは、1度ずつ回る速度(=speed)のリンゴであって、描く軌道は円です つまりもとに戻ります。
私がお伝えしたのは半径rで円を回らせ、そのrの値が大きくなることで外に円が広がっていく というように動かすものです。

例えば何にでも使えますが、testというオブジェクトを新たに作り、
・Create Eventに

C=8//作りたい個数
for(n=0;n<C;n+=1)
{
a[n]=instance_create(x,y,OBJECT)//OBJECTに回したいオブジェクト
a[n].r=0//初期半径
a[n].di=D
D+=360/C
}

・StepEvent
for(n=0;n<C;n+=1)
{
with(a[n])
{
x=test.x+lengthdir_x(r,D+di)
y=test.y+lengthdir_y(r,D+di)
di+=2 //回る速さ
r+=2//半径が広がる速さ
}
}

これでどんな既存オブジェクトでも回せると思います

4654水晶:2017/04/20(木) 21:24:00 ID:PJN/Zt4Y
>>4653
>>4652
ありがとうございます!
できました!
本当にありがとうございました!

4655水晶:2017/04/20(木) 21:25:39 ID:PJN/Zt4Y
できたんですが、耐久で作りたいのですがどうすればいいですか?

4656水晶:2017/04/20(木) 21:58:04 ID:PJN/Zt4Y
>>4652
やっぱりできてませんでした、すみません、F8キーをおしてもいきたい部屋にいきませんでした、なぜでしょうか

4657名無しさん:2017/04/22(土) 11:03:43 ID:bp5PiC0g
>>4656

考えられる原因として
1.ルームが存在しない
2.ルーム名とスプライト名などが被ってルームと認識されていない
3.条件式がおかしい

この3つかなと(これぐらいしか思いつかなかったです.....)



あと>>4652 のコードも気になったので
最適化をしてみました

<Script 1>

///Script Name -> is_main_room
if(room == rInit) return false;
if(room == rMenu) return false;
if(room == rSelectStage) return false;
if(room == rTitle) return false;
return true;



<Script 2>

///Script Name -> instance_destroy_select
with(argment0) { instance_destroy(); }



< >>4652 のコード>

if(!is_main_room()) exit;
if(global.death != 0) exit;

var roomTo;
roomTo=xxxx;

global.grav = 0;
room_goto(roomTo);

instance_destroy_select(player1);
instance_destroy_select(player2);



-----

with(object name){ instance_destroy(); }
これに関してはよく使うと思うのでこれだけはまとめておいたほうがいいかと

4658水晶:2017/04/22(土) 23:18:15 ID:PJN/Zt4Y
同じオブジェクトを二個以上作り部屋に作りたくない時はどうすればいいですか?
Bキーを数回おすとあるオブジェクトをつくったのですがおしすぎると何個も生成してしまいますどうしればいいですか?

4659名無しさん:2017/04/23(日) 17:38:12 ID:979Bgik2
>>4658
instance_existsかinstance_numberを使えばできるはずです

4660水晶:2017/04/23(日) 21:09:33 ID:PJN/Zt4Y
>>4659
そのコードをどのように使うのですか?

4661水晶:2017/04/23(日) 21:14:16 ID:PJN/Zt4Y
>>4657
できません、どうすればいいですか?名前が重複している物もありませんし

4662名無しさん:2017/04/23(日) 22:52:11 ID:/7qafodE
まず言いたいことは1つのレスにまとめようか

4663名無しさん:2017/04/23(日) 22:59:19 ID:bp5PiC0g
>>4661
そうなってくると後 考えられることとして

「実は最初からオブジェクトを生成していなかった 
だからF8押しても処理が実行されないので飛ばない」

って感じがします


自分はアイワナ作品全体のクオリティを上げたいと思い
このようなサポートをずっとしてます
ですが制作者自身にももっと解決案を考えて貰いたいため
連続で一定数以上の質問にはこちらから答えることは原則しません



ゲーム制作には模範解答があるものではありません
だから自分で考えてほしいと思っています

4664水晶:2017/04/25(火) 20:10:19 ID:PJN/Zt4Y
よく耐久でリンゴをハート形に飛ばしたり四角の形で飛ばしたり、ラビリンスのさびみたいなやつありますよね、あれってどうやって作るんですか?

4665名無しさん:2017/04/25(火) 21:19:09 ID:bp5PiC0g
>>4664
Ctrl+Fでスレッド内を調べてください

4666水晶:2017/04/26(水) 16:41:36 ID:PJN/Zt4Y
>>4664
なんて調べればいいんですか?

4667名無しさん:2017/04/26(水) 20:24:43 ID:/7qafodE
いっそ全部見てみれば?

あ、以前話していた滑る床の問題についてですが、最新版のゆううつエンジンをDLしてコードを引っ張ってきたら解決しました…何故最初からそれをやらなかった俺…orz

4668水晶:2017/04/29(土) 21:56:57 ID:PJN/Zt4Y
全部見るのはちょっと…

4669名無しさん:2017/04/30(日) 01:25:23 ID:yZY7a.Aw
ここに限らず質問掲示板において、


・同じ質問が繰り返しされることがある まずは先人たちの疑問と回答を参考にすること
 (ここでは >>全部読む を押して Ctrl + Fキーで調べたい単語を入力してみる)

・丁寧な言葉で質問・回答する 皆があなたの友達ではない

・質問内容は具体的に 状況をわかりやすく説明する

・回答をいただいたらまずお礼を言う 必ず回答がもらえるものと思わないこと

・皆で使うものなので連続投稿は極力避ける 自分本位にならないように

・何でもかんでも「教えて君」にならないように 言葉や単語の意味など少し調べたらわかるものは自分で調べる



上記のような注意点・マナーがあげられると思います。
「知らなかった」「忘れていた」等あると思いますが、皆が気持ちよく利用しお互いの発展に貢献していくために、今一度こういったネット上のマナーを再確認していただければなあと思いました。

4670名無しさん:2017/05/01(月) 08:17:18 ID:bp5PiC0g
一応補足
何度も書いていることだけど

質問の際にはアイワナエンジンの種類よりもGameMakerのバージョンの記載してください

8.0か
8.1か
studioか
studio 2か

proか liteか

こっちのほうが遥かに重要ですのでお願いします

4671水晶:2017/05/02(火) 19:27:51 ID:PJN/Zt4Y
>>4640
8.0のLiteです

4672名無しさん:2017/05/02(火) 22:13:19 ID:cmbgIlfA
>>4671
流石に他力本願過ぎません?
>>4669 を読みましたか?

4673水晶:2017/05/08(月) 20:42:37 ID:PJN/Zt4Y
>>4669
ほんとにすみません!次でもう最後にします!これだけはどう頑張っても無理だったので質問させてください
I wanna be the DAIKONの難易度選択の画面みたいにキッド君の周りが見えなくするにはどうすればいいですか?
これでもう本当に最後なんで誰か教えてください!

4674名無しさん:2017/05/09(火) 23:30:57 ID:bp5PiC0g
>>4673
プレイヤーの周り以外を暗くするやつを応用すればいけます
ルームの背景を白 ついでに白いスプライトを用意
ワープのdepthをいじり
プレイヤーの周り以外を暗くする方法のようにするだけです

4675水晶:2017/05/10(水) 20:59:26 ID:PJN/Zt4Y
>>4674
そのプレイヤー以外周り以外を暗くするやつをつくりたいんです

4676名無しさん:2017/05/11(木) 21:05:46 ID:bp5PiC0g
>>4675
よく分からないのですが・・・・・
プレイヤーの周りだけ暗くするのと
プレイヤーの周り以外を暗くするのは

基本的にスプライトを差し替えるだけでできます

周りだけ暗くするのであれば 円のスプライトを用意します
周り以外を暗くするのであれば 中心を円でくり抜いたスプライトを用意します

4677E=etsu/myo:2017/05/11(木) 21:48:13 ID:Cx1IOZqY
水晶s>人に聞くより少しは自分で考えることをしましょう。
このままだったらいつまでも上達しませんよ、

ごめんなさい、乱入しました。

4678水晶:2017/05/11(木) 22:23:48 ID:PJN/Zt4Y
>>4677
わかってます、が、マジでわからなかったので。
>>4676さんのおかげでなんとなくわかりました!

4679水晶:2017/05/12(金) 23:03:09 ID:PJN/Zt4Y
ん?できねえ、想像してたのと違う(泣

4680水晶:2017/05/12(金) 23:07:10 ID:PJN/Zt4Y
あとなぜかゆううつエディション起動しようとしたらGamemaker.exe自体はあるのにプログラムから開くの欄になくて参照から選択して開いてもできません
どうすればいいですか?

4681名無しさん:2017/05/13(土) 15:43:41 ID:/7qafodE
言いたいことは一つのレスにまとめろと言ったはずだ…あとDAIKON云々の件で最後じゃなかったの?

4682水晶:2017/05/13(土) 16:21:22 ID:PJN/Zt4Y
(; o ;)うえええええええええええええええええええええええええええええええええええん

4683名無しさん:2017/05/13(土) 18:05:06 ID:erEcEnSo
>>4682
長文注意

ログがあるからまずはそれを1からROMりましょう。それかせめてワード検索。過去の方々が残していった情報に大体必要なことは書かれています。
それと今のあなたは一部の方からおもちゃと見なされているフシがあるのであまり書き込まない、ハンネを付けない、別の端末でやる、等の事をしないと誰もあなたの質問には答えてくれません。過去にもそのようなことが何度か有りましたし…
掲示板と言うのはローカルルールと言って、いわゆる板毎にマナーと言うのが必ずあります。言うなれば社会のマナーと言ったところでしょうか。(例えば基本お願いする立場だから敬語を使うとか、謙虚にするとか)
あなたは少なからずアイワナに興味を持って更に製作というジャンルに目を着けてくれた方です。GameMakerと検索すれば8,8.1,studio等の様々な使い方の情報が出てきますし、GameMaker アイワナ と検索すればそれこそ沢山の役に立つサイト等が出てきます。初めから凄い作品を出す人は少なからず存在しますが、基本的には少しずつ触っていくうちに慣れていくパターンと言うのも多い筈です。
最初は参考サイトをまるまるコピーして形を作る、という感じでも構いません。どうか今後のご活躍を切に願っています。(針並べただけとかメドレーもどきとかはマジでやめておいたほうがいいです。叩かれまくります。
)
最後に、何を検索すればいいのかわからなかったりファイルの関連付けがうまくできなかったりはアイワナと言うよりはPC、ネットスキルの方に問題があると思いますのでそこら辺も一緒に調べて着実につけていった方が良いかと思われます。
これと言った質問へのアドバイスは少ないですが、これからの製作等の上でのヒントとなれば幸いです。

4684名無しさん:2017/05/14(日) 02:09:54 ID:7.LKfvtg
たまーにだけどアイワナが起動しません!っていう人がいて、よくよく聞いてみたらzipファイルを実行しようとしてたみたいなことあったよね

4685名無しさん:2017/05/17(水) 18:01:52 ID:Flmqbzz.
冷静になって考えてみれば肝心な調べ方を教えてなかったような気がします。
そこらへんをまとめてます。

1.何について知りたいのかを箇条書き
 これはそのままの意味です。誰かに質問するような感じで、メモ帳に一回文章を起こしてみてください。このときにアイワナエンジンのことを考えずに文章に起こすと良いです。

2.検索をかける
 例えば >>4664 のようなことを知りたいとします。とりあえずこのスレッド内で検索をかけるとしましょう。
 >>4664 で知りたいことは
 「ハートの形で飛ばす方法」、「四角の形で飛ばす方法」
 この2つです。
 ここから検索するワードは「ハート」と「四角」です。Ctrl+Fで現れる検索ボックスには、単語単位で1つずつ入れていくと目当てのものが見つかりやすいです。
 
 googleで四角形弾幕を調べるのであれば、正直GMLの範疇を越えないと難しいです。「四角形 描画 プログラム」などと打つと大体C/C++のプログラムが出てきますので・・・
 C/C++を理解していないと難しい部分です。仮に分からなくてもgamemakerに持ってこれる人は持ってこれますが、大体はGMLをガンガン書ける人ですので、こういう時は質問してください。

 gamemaker内の問題であれば、大体英語のほうが該当のページが出てきやすいので、英語で検索をかけます。
 例えばgamemakerが起動しないのであれば、「gamemaker not start」や「gamemaker not launch」みたいな感じで検索をかけます。短い文章であればgoogle翻訳で英語に翻訳してもいいです。
 大体検索結果の上のほうにyoyogamesの公式フォーラムページが出てきますのでそれを見るといいと思います。
 
 後はAND OR NOT検索を活用してみてください
 
こんな感じでどうでしょうか
//////////////////////////////////////////////////

4686名無しさん:2017/05/17(水) 18:09:30 ID:rZYv28mg
絶対無理でしょ
アイワナをやめろとは言わないが制作は無理
簡単とはいうけどプログラミングだからね

4687水晶:2017/05/17(水) 22:38:43 ID:PJN/Zt4Y
>>4685
ありがとうございます!この文章を読んでいたらなんだか勇気か出てきました!これからは人に頼らず自分でも頑張ってみます!
それからいろいろ教えてくださった皆様、本当にありがとうございました!

4688Mr.ケイト:2017/05/18(木) 07:57:39 ID:.Z7rwrts
初歩的な質問失礼します。アイワナ製作初心者ですが「game maker」以外に必要なソフト、またはファイルなどはありますか?

本当に初歩的な質問で申し訳ありませんが、ご返答お願いします

4689名無しさん:2017/05/18(木) 16:36:09 ID:/7qafodE
最近名前付きの初心者が増えてるな…別に>>4688を悪く言うつもりはないけど
今のうちに忠告しておきますが、あんまりしつこく質問すると嫌われるから気を付けてくださいね(詳しくはここ最近のレスを参照すべし)。

それはさておき質問に答えますね。僕なりの答えは「詰まった時に考えろ」です。
まず作ってる間について、例えばスプライト(オブジェクト用の画像データ)を作りたいとします。
Gamemakerの画像編集機能は意外と高性能ですが、それでも限界はあるでしょう。そんな時、何のツールを使えばいいか考えましょう。状況に応じて使い分けるのもいいですね。
続いて完成したexeに同梱する外部ファイルについて。例を挙げるならbGMとかGMFMODSimpleとか、外部ファイルにもいろいろありますが、よほど凝ったのを作りたいのでなければ必要は無いかと(というか自分でも書いてて何のことか分かってないし…)。
もしどうしてもGamemakerで出来そうにないことがあれば、その時は使えそうなものを調べたり考えたりしてそれに頼りましょう。恐らくそれで充分なのではないでしょうか。

長文失礼しました。(…あれ、外部ファイルってLiteでも使えたっけ…?)

4690名無しさん:2017/05/18(木) 18:10:12 ID:q7xlq3G2
>>4688
とりあえずエンジンをDLしてみて、gmkを起動してみて実行(上の緑▷のボタン)してみてください
たぶんいつも遊んでいるゲーム画面がでてきて、ゲームとして遊べると思います
ということは、アイワナを作るだけならGamemaker(と基盤となるエンジン)があればできるということですよ
たぶんまだGamemakerの使い方すらままならない状態だと思うので、エンジンの中身をみてみて感覚をつかめばいいと思います



最近のログをざっと読んだけど、質問者に対してちゃんと調べたら?っていうのは意地悪で言ってる訳ではなくて
自分で調べたり考えたりしないと、何ができるのかがわからないし発想力も身につかない
大抵教えてもらったものをコピペして終わりだとおもうけど、それだとコードがどうなってるのかも理解できないし、
理解できてないが故になにを書き換えれば自分の理想の動きになるのかの修正もできないし、他のコードを書くときに応用することもできない

まずは調べる・考えるということを身に着けてないと上達しなくなるので、そのことを心配しての"ちゃんと調べてください"ってことだと思ってくださいね
製作は続けていれば絶対に上達していくので、あきらめないように頑張ってください

4691名無しさん:2017/05/18(木) 18:11:57 ID:KTER6pw.
>>4688
i wanna be the engineっていうやつのどれかが必要です

4692名無しさん:2017/05/18(木) 19:05:27 ID:QQzb/nVo
>>4689
Liteでも外部ファイルはexcute_program()で実行できたはず

4693Mr.ケイト:2017/05/18(木) 20:27:51 ID:.Z7rwrts
ご返答ありがとうございます。
なるほど、「詰まったら考えろ」ですね。わかりました。
最初のうちは手探りで学んでいこうと思います♪

4694名無しさん:2017/05/19(金) 08:33:46 ID:GiFK2pgY
「アイワナ制作に関する よくある質問」的な感じで新しくスレ作って、よくある質問をまとめたほうがいいんすかね?

4695名無しさん:2017/05/19(金) 08:39:11 ID:T1qG/6Uw
それ同じじゃね?

4696名無しさん:2017/05/19(金) 20:09:59 ID:/7qafodE
>>4692
マジすか
いつか使うかもしれないし覚えておきます

(行くところまで行くとエンジンどころかGamemakerすら不要になりそうな気がしなくもないけど考えなくていいよね)

4697名無しさん:2017/05/19(金) 20:12:22 ID:iL.VUS2A
アイワナが廃れてる理由は、gamemakerを使いこなせるようになるにつれてだんだんgamemakerがクソって気づき始めるからだよ

4698名無しさん:2017/05/19(金) 20:38:02 ID:QQzb/nVo
>>4697
8.xだと課金しないと画像回転もDLLも使えないもんなあ

4699名無しさん:2017/05/19(金) 20:49:59 ID:7.LKfvtg
課金しても……ね
clickteam fusionの方はどうなの?自由度高いの?

4700名無しさん:2017/05/19(金) 22:25:52 ID:7PyqxnmA
自由度の高さを求めるならunityがあるんだよなぁ…
アイワナ用のエンジンもあったはず
GMLが初めてさわったプログラムって人ならGMSでもいいと思う
けどあんまり触る人がいないのは慣れたインターフェースから離れて新しいのに慣れるまで時間かかるから、と言うのが一番大きいと思う。

4701名無しさん:2017/05/20(土) 00:50:01 ID:7.LKfvtg
Unityが攻守最強すぎる

4702名無しさん:2017/05/31(水) 23:51:12 ID:CXBzYoYk
Unityが最強。
しかしPCスペックに自身あるならUE4とか言う神エンジンがあってだな。
まあGameMakerがもう古い

4703名無しさん:2017/06/01(木) 11:01:21 ID:fUPWloSQ
ただ忘れてはいけない。

ゲームエンジンにはそれぞれ 得意な表現 / 不得意な表現がある。
その部分を把握し、自身が表現したいものに合わせて、ゲームエンジンを選択していく必要がある。
だから他人に流されてゲームエンジンを選ぶのは良くない。

どんなツールで作ったのか、そんなことはゲームを遊んでいる人にとってどうでもいいことだ。
ほとんどの人は、ただそのゲームが面白いかどうか、それだけをみている。

gamemaker製で作られたゲームが全てクソゲーではないし、
UE4製で作られたゲームが全て良ゲーではない。

undertaleやdownwellはgamemaker製だが、多くの人に支持されている。

ツール如きで良いとかダメとかいうのは違う。
良いツールから良いものが作れるわけじゃないことを忘れてはいけない。

4704名無しさん:2017/06/01(木) 12:12:44 ID:ttJeqTh6
8.0はゴミ

4705名無しさん:2017/06/01(木) 13:03:25 ID:DlK4xWQk
すみません、ボス耐久について質問です。
最初のアラーム0の弾幕を10秒撃った後に
アラーム1の行動パターンに移りたいのですが
そのやりかたがわかりません。
説明が下手で申し訳ありませんが
返信よろしくお願いします

4706名無しさん:2017/06/02(金) 00:10:55 ID:bp5PiC0g
createイベントで
alarm[0] = 任意の数
alarm[1] = room_speed * 10;

alarm0イベント
/*処理*/
alarm[0] = 任意の数

alarm1イベント
alarm[0] = -1;

こんなんでどうでしょうか?

4707名無しさん:2017/06/04(日) 18:25:06 ID:/zuJ8fEU
すみません、えるなちゃんエンジンのセーブ項目について質問です。
GMは8.0のLiteです。
セーブするグローバル関数を増やそうとして、
スクリプトのLoadgameに
for(ii=global.ItemByte; ii>0; ii-=1) {
b = file_bin_read_byte(f);
for(i=6; i>0; i-=1) {
global.savingItem[6*(ii-1) + i-1] = b div power(2, i-1);
global.Item[6*(ii-1) + i-1] = global.savingItem,[6*(ii-1) + i-1];
b = b mod power(2, i-1);
}
}
と書いたのですが、

___________________________________________
COMPILATION ERROR in Script: loadGame
Error in code at line 83:
global.Item[6*(ii-1) + i-1] = global.savingItem,[6*(ii-1) + i-1];
^
at position 57: Unexpected symbol in expression.
というエラーが出てしまいました。
83行目のどこに問題があるのでしょうか。
教えてくださると嬉しいです。
ちなみに、global.Item[1]とglobal.ItemByteは定義してあります。

4708名無しさん:2017/06/04(日) 18:48:34 ID:/zuJ8fEU
>>4707
自己解決しました!
お騒がせしてすいませんでした!

4709名無しさん:2017/06/09(金) 14:06:39 ID:DlK4xWQk
>>4706
ありがとうございます

4710名無しさん:2017/07/14(金) 07:48:44 ID:EZe/qLlw
I wanna be the SMFのように、プレイヤーが円の内側(or外側)を歩くようにするにはどうしたら良いでしょうか。
中心から外に向けてgravityかけてプレイヤーのangleを変えるのではないかとは思うのですが、プレイヤーと円周の接地面の設定がよくわかりません。

8.0proを使ってます。

4711名無しさん:2017/07/15(土) 07:42:24 ID:TB9DCcSw
>>4710
そもそもプレイヤーが左右に動くのは左右のキーを押している間に0°,180°の角度で動いているからだから、それを円に当てはめればいいのでは?
左右を押している間だけ円の中心を軸にして半径が中心とプレイヤーになるようにして時計回り、半時計回りでプレイヤーを移動させてあげればいい。
円で回すのがわからなかったら過去ログ参照で。

4712名無しさん:2017/07/18(火) 01:08:07 ID:EZe/qLlw
>>4711
ありがとうございます。
通常は地面に接地する際に2ジャンが復活する設定ですが、これに関してはどう変更したら良いでしょうか。

4713名無しさん:2017/07/18(火) 10:27:15 ID:YZqCayY2
>>4712何でもかんでも人に聞くな、少しは自分で考えろ

4714名無しさん:2017/07/18(火) 14:00:01 ID:XBPxUYsY
とりあえず連続で3回以上の質問をしたらさすがに無いなとは思いますが
まだ2回目の質問なんでヒントは出します

>>4712
そうですね
通常の、平坦な地面での移動の場合、いつ、どのタイミングでジャンプが復活しているのかを考えてみてください
その部分に答えはあるはずです

4715名無しさん:2017/07/19(水) 23:43:11 ID:zc7VDUno
上昇しているブロック(parentはblock)にプレイヤーが乗ると挙動不審になり
ブロックが止まってしまったりキッド君が横移動できなくなったりします。
ブロックが止まる問題はキッド君の座標を強制的に変えることで対処しましたが、
横移動できない問題に関しては原因が全く分かりません。
詳しい方お願いします。

4716名無しさん:2017/07/20(木) 06:24:36 ID:bp5PiC0g
>>4715
今回は使っているエンジンによって対処法が変わりそうなのでエンジン名を記載してください


playerと上昇するブロックの当たり判定部分のコードと
上昇するブロックのstepかend stepあたりのコードを見せてください

4717名無しさん:2017/07/20(木) 14:42:04 ID:zc7VDUno
>>4716
エンジンはyuuutuです。
collisionのことでしょうか?
if vspeed<0 {
player.y+=vspeed
}
と書いてます。
stepの方には
if(freetrigger.triggered=trg&&x=xstart&&y=ystart&&speed=0){
hspeed=h;
vspeed=v;
}
if stopx!=0 && stopy!=0 && speed!=0 {
if hspeed>0 && x>=stopx {
x=stopx
y=stopy
hspeed=0
}
if hspeed<0 && x<=stopx {
x=stopx
y=stopy
hspeed=0
}
if vspeed>0 && y>=stopy {
x=stopx
y=stopy
vspeed=0
}
if vspeed<0 && y<=stopy {
x=stopx
y=stopy
vspeed=0
}
}
else {
if (y>ystart+32 || y<ystart-32 || x>xstart+32 || x<xstart-32) depth=0;
}
てな感じです。

4718名無しさん:2017/07/21(金) 07:19:46 ID:bp5PiC0g
>>4717
この横移動できないというのは毎回必ず起こるものですか?
なんとなくソースコードを見ている感じですと

ブロックとプレイヤーが当たる

collision eventで補正

まだめり込んでいる

めり込んでいるので移動できない

そんな感じに見えました
なので上昇しているブロックのvspeedが小さいほど
この現象は起こってしまうのではないかと思います

一応対処法・・・みたいなものはあるのですが
これをすると当たり判定が四角でない場合
正しく判定しない可能性があるので注意してください

bboxというのがあります(bbox → bounding box)
これは当たり判定の境界の座標を示しています
bbox_left
bbox_right
bbox_top
bbox_bottom

因みに
sprite_get_bbox_bottom()
といった関数とは別物です

これを使い現在プレイヤーがどのくらいブロックにめり込んでいるのかを計算し
そこからプレイヤーをめり込んでいない位置まで動かす
このようなことができます

具体的には
self.bbox_top - other.bbox_bottom
こうすると対象物がどのくらいめり込んでいるのかが一発で分かります
この計算した数値分だけプレイヤーを上げます

4719名無しさん:2017/07/21(金) 15:14:51 ID:zc7VDUno
>>4718
bboxという変数は知りませんでしたがその計算式を使ってもめり込んだりします……
前述のcolisionに入っていたソースも入れると動けますがあまりにも上に行き過ぎたりします。
今回は心残りですが速度は固定だったので-2する形で解決させました。
親切にご回答くださいましてありがとうございました。

4720名無しさん:2017/07/23(日) 14:43:40 ID:/7qafodE
これから先GameMaker:Studioを使うかもしれないと思ったので質問させていただきます。
有料版で出来て無料版で出来ないことといえばおもに何があるのでしょうか?また、仮に有料版を購入するとした場合、日本円では無理なのでしょうか?

4721名無しさん:2017/07/23(日) 17:53:26 ID:bp5PiC0g
>>4720
一応Studio Studio2の両方を書いておきます

Studio
 基本的にはほとんどの機能を制限なく使えます
 8.1以前のpro以上の機能が無料で使えると思ってください
 
 無料の場合 ゲーム起動時にスプラッシュ画面(GameMaker Studioのロゴ)が出てきます
 ロゴと言っても8.1の無料版のようにずっと表示している ということではありませんのでご安心を
 
 有料になるとiOSやAndroidその他もろもろの機種にエクスポートできるようになります
 なのでWindowsだけで公開するのであれば有料版は買わないほうがいいと思います


Studio2
 今現在 無料版は本当にお試しみたいな感じです
 作れるオブジェクト数も制限されて shaderも使えませんし
 有料版じゃなければexeにすることすら許されていません
 (新しく追加されたタイルセットは正しくセットできれば快適にステージ作成が出来るのでぜひおすすめしたいんですけどね)

 ただしStudio自体も最初は作れるオブジェクト数に制限を持たせていたため、
 今後はStudioと同じように無料でexeにすることができるようになるかもしれません
 
 因みにI wanna be the GMS2 Engine YoYoYo Editionは有料版でないと中身すら開けなかったので
 早目に試したいなどといった特別な理由がない限り、自分は有料版にすべきではないのかななんて思っています7



有料版を購入するためには

1.コンビニなどでVプリカを購入
2.paypalにカードの情報を打ち込む
3.paypal経由で購入
でいけると思います

直接Vプリカのカード情報をフォームに打ってもいいのですが
この方法だと他の海外のサイトでトラブルにあったりしている人がいるらしいです
なのでpaypalを経由することをおすすめします

47224721:2017/07/23(日) 18:05:21 ID:bp5PiC0g
ああごめんなさい 購入方法で1つ手順が抜けていました
Vプリカの購入後にVプリカのサイトに行って番号を登録しないとだめです

4723名無しさん:2017/07/23(日) 20:49:25 ID:/7qafodE
詳しくありがとうございました。とりあえずStudioを試してみようと思います、感謝です

4724名無しさん:2017/07/29(土) 13:04:28 ID:TqHwDK3I
質問させてください。

ループをview_hviewなどを使ってズームするとき、
すべてのオブジェクトがズームされてしまい、
常時画面に表示したいHPゲージなどが隠れる、または比率が異なってしまいます。

あるオブジェクトだけ比率を保ちながら、画面を拡大する方法はあるのでしょうか。

4725名無しさん:2017/07/29(土) 13:52:30 ID:OHbTDcUg
view2つ使ってHPのところとプレイ画面で分けるか、HPを画面に合わせて小さくするか

4726名無しさん:2017/07/29(土) 13:57:37 ID:TqHwDK3I
>>4725 回答ありがとうございます!
そうした場合、HPのところに違うオブジェクトが通りかかると
急に拡大したようにみえてしまうのでしょうか?

4727名無しさん:2017/07/29(土) 20:28:49 ID:TqHwDK3I
>>4725
試行錯誤した結果、思い通りにうごきました。ヒントありがとうございました。

4728名無しさん:2017/07/31(月) 10:10:18 ID:0PASd3TI
I wanna be the Orbitや、I wanna sunspikeなどに出てくるミラーボールは、
どのようにすれば作れるのでしょうか。
ただ、右にずっと動かすのではなく、
斜めに動いたりして、自由に動かしたいです・・・

4729名無しさん:2017/08/03(木) 07:26:52 ID:Aln3yfBg
>>4728
数学勉強しな

4730名無しさん:2017/08/03(木) 21:40:29 ID:bp5PiC0g
>>4728
ヒントを出すか結構悩んでたんですがヒント出します
(結構分かりにくいからという意味で)

ミラーボールを作るには「魚眼レンズ」を参考にすべし

これがヒントです

4731名無しさん:2017/08/05(土) 10:55:19 ID:oRkZ3pSM
Player killer に接触したときに経過時間を+1分というように
DeathTimeの値を変更したいのですが、Timeの値を弄る方法が分かりません
どなたか返信お願いします

4732名無しさん:2017/08/05(土) 18:09:47 ID:CXie/K7c
>>4731
コードはエンジンによって異なるので答えられないですが、プレイヤーオブジェクトのalarm0イベントとStepイベント
を参考にすればできます。

4733名無しさん:2017/08/06(日) 15:13:02 ID:oRkZ3pSM
>>4732
解決しました ありがとうございます

4734名無しさん:2017/08/07(月) 15:10:08 ID:nlYQeBwU
物体を指定の座標まで動かし止めたいのですが
move_towards_pointだと止まらず通過してしまうので関数towardを自作しました
toward(x,y,s)で(x,y)まで速度sで動かします
すると、1つの物体までは動かせるのですが複数のオブジェクトで関数を同時に進行することができません
オブジェクトAをtoward(100,200,3)で動かしている最中に
オブジェクトBをtoward(200,300,3)で動かすというようにできません
どなたか力を貸してください
作成したコードは以下の通りです

scriptsタブ
move_towards_point(argument0,argument1,argument2)
for(i=0;i<=100;i+=1){
if(global.flash_object[i]=0){
global.toward_object[i]=id
global.toward_distance[i]=point_distance(x,y,argument0,argument1)
global.toward_x[i]=argument0
global.toward_y[i]=argument1
global.toward_speed[i]=argument2
global.toward_dot[i]=argument2
exit;
}
}

wolrdのstepイベント

if(keyboard_get_numlock())keyboard_set_numlock(off)

for(i=0;i<=100;i+=1){
if(global.toward_object[i]!=0){
a=global.toward_object[i]
global.toward_distance[i]=point_distance(a.x,a.y,global.toward_x[i],global.toward_y[i])
if (global.toward_distance[i]<=global.toward_dot[i])
{
a.speed=0;
a.x=global.toward_x[i]
a.y=global.toward_y[i]
}
}
}

4735名無しさん:2017/08/07(月) 16:01:28 ID:RYo6566c
>>4734

個々の移動を制御するのにグローバル変数は必要ないので、それをやめると良いと思います。

1step毎にspeedずつ進むので、例えば目標の座標までの距離がspeed以下の時に進めば座標を通り越すことになります。座標までの距離>speedの時に動かして、座標までの距離≦スピードならもう目標座標にしてしまえばキレイに目標座標に止まるように見えると思いますよ。

4736名無しさん:2017/08/07(月) 16:04:09 ID:W2J7RUJ6
>>4734
global変数は全オブジェクトに効くから使わないほうがいい。
やるなら例えば
speed=point_distance(x,y,x2,y2)/20 //割る数とアラームにセットする数値を一緒にする
alarm[0]=20

alarm0のイベント
speed=0

これでどうだろうか

4737名無しさん:2017/08/07(月) 17:46:11 ID:nlYQeBwU
>>4735
scriptsからworldに渡す際に、操作するオブジェクトを指定するためのglobal.toward_objectは最低限必要かもしれないです
とすると、withで対象のオブジェクトを参照すれば後はglobalを使わないで済みますかね

>>4736
その方法だとできると思います
しかし、アラームでやろうとすると、動かすオブジェクトごとにアラームを設置しなければならず面倒だと思ったのですが...
グローバルな関数を作ってしまえば後は楽になる思いました

4738名無しさん:2017/08/07(月) 17:59:24 ID:hQQ.Vr6Q
>>4737
例えばランダムに同時に出した複数のオブジェクトをあるタイミングで形成したい場合は先程のアラームで問題ない。設定も同オブジェクトだろうから、一つ設定して終わり。

恐らくオブジェクトが同時にでるのではなく、
色んなタイミングででてそれをあるタイミングで一斉に指定した座標へ移動させたいのかな?
それなら、対象のオブジェクトのstepイベントでフラグ監視しつつwith文でフラグをたてればいい。

with(obj){
flag=true;
}

stepイベ
if(flag){
指定座標へ飛ばす
alarm[0]=20
flag=false;
}

アラームイベ
speed=0

など、やり方は色々と。

4739名無しさん:2017/08/07(月) 21:21:27 ID:bp5PiC0g
>>4734

Unityの質問掲示板にあったコードをgamemakerに移植↓
answers.unity3d.com/questions/414829/any-one-know-maths-behind-this-movetowards-functio.html

///move_toward_point2(to_x, to_y, speed)
///現在のオブジェクトの座標からtoの値に向かってspeedの速度で座標を動かします
///勿論目的地に着くと止まります
///
/// to_x - 目的地のxの値
/// to_y - 目的地のyの値
/// speed - 動く速さ

var to_x, to_y, spd

to_x = argument0;
to_y = argument1;
spd = argument2;

var dir_x, dir_y;
dir_x = to_x - x;
dir_y = to_y - y;

var len;
len = point_distance(/*ここは考えてみてください*/);

if (len <= spd || len == 0.0)
{
//
// ここも考えてみてください
//
// ヒント: if文は目的地を過ぎようとした瞬間にtrueになる
//
}

x = x + dir_x / len * spd;
y = y + dir_y / len * spd;


使用例:(ルームの中心に向かうオブジェクト)

move_toward_point2(x, room_width /2, 10.0);
move_toward_point2(y, room_height/2, 10.0);

4740名無しさん:2017/08/08(火) 00:27:05 ID:EZe/qLlw
>>4737
どのタイミングで座標へ移動を始めるのかわかりませんが、worldに何か渡す必要があるんでしょうか…?
任意のタイミングで1つずつ座標へ向けて動かすんですか?

4741名無しさん:2017/08/08(火) 08:11:23 ID:bp5PiC0g
>>4737
globalを使ってはいけない最大の理由は「メモリ」にあります

例えば オブジェクト名「Pico」の中に単純に

hoge= 10

と書いた場合このhogeはPicoが持っている変数になります
なのでインスタンスが削除されたタイミングでhogeという変数をゴミ箱に捨ててくれます


global.hoge = 10;

このように書くとhogeは誰も持っていない変数になります
なのでこれを一度しか使わないとなるとゴミが残り続けます
そしてこのゴミを捨てる手段はgamemakerの場合 ゲームの再起動以外はなかったような気がします

幸いにもアイワナはリスタートする度にゲームを再起動をするという方式を取っているため
あまり気にしなくても良いのですが
再起動の方式を取らないアイワナや耐久などでは本当に気を付けないと大変な目に合います



試しにやってみればわかるのですが
a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; g = 0; h = 0;

for(i = 0; i < 32000; i += 1)
{
a[i] = i;
b[i] = i;
c[i] = i;
d[i] = i;
e[i] = i;
f[i] = i;
g[i] = i;
h[i] = i;
}

(32000以上になるとエラーが起こるようなので分けています)
このようなものをcreateに書き
stepで何らかのキーを押したら消すようにします

タスクマネージャーでメモリ使用量を見てもらうとわかるのですが
消した瞬間に一気に数値が下がります

同じような感じでaからhまでを全てglobalにした場合
消しても数値が下がりません

このようにゴミ箱に捨てられないのでglobal変数はやめましょうということです
(global.timeなどは常に使うので逆にglobal変数じゃないとまずい事になります)

47424741:2017/08/09(水) 08:34:35 ID:bp5PiC0g
よくみたらPicoってなんだ……Piyoだったわ
ピコ太郎にでも毒されたんかな

4743名無しさん:2017/08/17(木) 00:49:23 ID:uUxB.L6E
>2060 playerのクリエイト文のmaxSpeedを0とかでごり押しで制御することが出来ます

4744名無しさん:2017/08/17(木) 10:23:55 ID:gMyMToQc
4年越しのレスとか熱すぎ

4745名無しさん:2017/08/18(金) 10:44:08 ID:CXie/K7c
質問です。ゆううつエンジンを使っています。
overloadのsoulsみたいなのを作ってみたのですが、途中でデス数とタイムが初期化されてしまいます。
scriptのセーブするほうには
tem = global.money;
for (k=4; k>0; k-=1) {
file_bin_write_byte(f, min(tem div power(256, k-1), 255));
tem = tem mod power(256, k-1);
}
ロードするほうには
for (k=4; k>0; k-=1) {
global.money += file_bin_read_byte(f) * power(256, k-1);
}
と書いています。
どこがおかしいのか教えてください。

4746名無しさん:2017/08/18(金) 11:56:08 ID:ynSgFmbU
まずoverloadのsoulsが何かという説明を入れたほうが、レス付くかと思います。

4747名無しさん:2017/08/18(金) 12:40:22 ID:bp5PiC0g
>>4745

一応global.moneyが257だとして計算してみたのですが
桁のずれなども無く問題はなさそうでした

4748名無しさん:2017/08/18(金) 12:59:14 ID:bp5PiC0g
>>4745
書き忘れてました

一応セーブ・ロードの全体のコードと
作成したセーブデータをバイナリエディタで開いた時の値(00 87 CA 57...みたいな感じ)を書いてください

4749名無しさん:2017/08/18(金) 19:27:24 ID:CXie/K7c
>>4748
セーブするほうには
var f,tem,k;
f = file_bin_open("save"+string(global.savenum),1);
file_bin_seek(f,10)

file_bin_write_byte(f,global.difficulty);
tem = global.death;
file_bin_write_byte(f,floor(tem/1000000));
tem -= floor(tem/1000000)*1000000;
file_bin_write_byte(f,floor(tem/10000));
tem -= floor(tem/10000)*10000;
file_bin_write_byte(f,floor(tem/100));
tem -= floor(tem/100)*100;
file_bin_write_byte(f,tem);
tem = global.time;
file_bin_write_byte(f,floor(tem/1000000));
tem -= floor(tem/1000000)*1000000;
file_bin_write_byte(f,floor(tem/10000));
tem -= floor(tem/10000)*10000;
file_bin_write_byte(f,floor(tem/100));
tem -= floor(tem/100)*100;
file_bin_write_byte(f,tem);
と書いてあってその下に
file_bin_write_byte(f,global.boss[1]);
file_bin_write_byte(f,global.boss[2]);
のようにボスとアイテムを記録するコードが書いてあります。
その下に
tem = global.money;
for (k=4; k>0; k-=1) {
file_bin_write_byte(f, min(tem div power(256, k-1), 255));
tem = tem mod power(256, k-1);
}
file_bin_close(f);

4750名無しさん:2017/08/18(金) 19:29:42 ID:CXie/K7c
続きです
ロードするほうには
var f,roomTo,k;

if(file_exists("save"+string(global.savenum)) == true){
f = file_bin_open("save"+string(global.savenum),0);
roomTo = file_bin_read_byte(f)*10000;
roomTo += file_bin_read_byte(f)*100;
roomTo += file_bin_read_byte(f);

room_goto(roomTo);
global.image_xscale=0;
if( !instance_exists(player) ) instance_create(0,0,player);

player.x = file_bin_read_byte(f)*10000;
player.x += file_bin_read_byte(f)*100;
player.x += file_bin_read_byte(f);
player.y = file_bin_read_byte(f)*10000;
player.y += file_bin_read_byte(f)*100;
player.y += file_bin_read_byte(f);
global.grav = file_bin_read_byte(f);

global.difficulty = file_bin_read_byte(f);
global.death = file_bin_read_byte(f)*1000000;
global.death += file_bin_read_byte(f)*10000;
global.death += file_bin_read_byte(f)*100;
global.death += file_bin_read_byte(f);
global.time = file_bin_read_byte(f)*1000000;
global.time += file_bin_read_byte(f)*10000;
global.time += file_bin_read_byte(f)*100;
global.time += file_bin_read_byte(f);
と書いてあり、その下に
global.boss[1] = file_bin_read_byte(f);
global.boss[2] = file_bin_read_byte(f);
とボスとアイテムをロードするコードが書いてあります。
その下に
for (k=4; k>0; k-=1) {
global.money += file_bin_read_byte(f) * power(256, k-1);
}
file_bin_close(f);

}
です。

4751名無しさん:2017/08/19(土) 17:49:34 ID:Nk89zegc
ボスの無敵時間のやり方を教えてください。

4752名無しさん:2017/08/20(日) 11:11:00 ID:bp5PiC0g
>>4749
ロードにはルームのID・プレイヤーの座標・gravをロードするように書いているのですが
セーブには上の情報が欠落しています

そのためロードしたときにおかしくなるのではないかと

4753名無しさん:2017/08/26(土) 21:41:16 ID:CXie/K7c
>>4752
上手くいきました。
スクリプトのコードの一部の書く場所に問題があったようです。
ありがとうございます。

4754名無しさん:2017/09/03(日) 23:51:52 ID:Jv5RQ.Mc
質問です
カービィによくある扉のギミック(扉の前で↑キーを押すと別の場所へワープする)ってどうすれば出来ますか?
出来れば、コードを書いていただけると幸いです
もし既出だったら、すみませんが何番目か教えていただけませんか?
ゆううつエンジンです!

4755名無しさん:2017/09/04(月) 11:42:07 ID:rZFJsq/Y
>>4754
普通のワープくらい作れるよね?あれは触れると(コリジョンイベントかな?)実行されるから、そのイベントを上キー押下イベントに変えればいけると思うよ。

4756名無しさん:2017/09/04(月) 20:53:42 ID:Jv5RQ.Mc
>>4755
やってみましたが、扉の前でなくても↑キーを押すとワープしてしまいます…

4757名無しさん:2017/09/05(火) 00:50:38 ID:EZe/qLlw
>>4756
扉のオブジェクトにプレイヤーとのコリジョンイベントを作り、中身を「もし上キーを押したら、別のルームへ移動する」という内容にすればできますよ

4758名無しさん:2017/09/05(火) 23:54:41 ID:Jv5RQ.Mc
>>1757
なるほど!
ですが私、コード化するのが苦手ですので、よろしければ、そのコードを書いて頂ければ幸いです。

4759名無しさん:2017/09/10(日) 22:29:57 ID:Jv5RQ.Mc
>>4758
間違えました。正しい返信先は、 >>4757 様です

4760名無しさん:2017/09/13(水) 22:16:16 ID:EZe/qLlw
>>4759

少し違う方法ですがありました。
>>3492

自分でも書けるように、なんでそうなるのか理解しながら見て写せると知識になると思います

4761名無しさん:2017/09/16(土) 07:23:13 ID:07h5L3KQ
i wanna be the partyに登場する説教針はどうやって作ってるんですか?ゆううつエンジンを使っています。

4762名無しさん:2017/09/16(土) 22:51:59 ID:Jv5RQ.Mc
>>4760
ありがとうございますm(_)m

4763名無しさん:2017/09/17(日) 09:41:54 ID:07h5L3KQ
質問です。ゆううつエンジンを使っています。
特定のオブジェクトに当たるとトリガー針が止まる方法を教えてください。

4764名無しさん:2017/09/17(日) 19:26:25 ID:oRXlZ52.
>>4763
当たられるオブジェクトのコリジョンイベントに針を設定して、コードに、
with(針の名前){
speed=0
}
でいいと思います。
Pathを使う方法もありますが

4765名無しさん:2017/09/25(月) 08:17:26 ID:UuVou6AY
質問させていただきます
ある一点を中心に、その周りをくるくる回る様な軌道を描くオブジェクトってどうやって作ってるんですか?
円形の軌道を描くものはできても、中心を固定する方法は分かりませんでした⋯
(初歩の初歩な技術のような気がして恥ずかしい...)
語彙力説明力不足、大変申し訳ないです

4766名無しさん:2017/09/25(月) 10:35:55 ID:e1s.5ifc
>>4765
このスレ内で「中心」で検索

4767名無しさん:2017/09/25(月) 13:37:31 ID:bp5PiC0g
>>4765
ある一点を中心に、その周りをくるくる回る様な軌道を描く…と一言でいいましてもいろいろな動き方が存在するのではないかと思います
例えば
youtu.be/8pB4UAPr7_k
であったり
youtu.be/KbCVBCASKz4
などなど

これらもある一点を中心に、その周りをくるくる回る様な軌道を描くと言えます
ですのでもう少し具体的な説明が欲しいです 

お願いします

4768名無しさん:2017/09/25(月) 14:07:14 ID:ZQRywE.c
いじわるするなよ
普通に
x=x0+r*cos(digtorad(theta))
y=y0+r*sin(digtorad(theta))
でいけるよ

4769名無しさん:2017/09/25(月) 14:23:26 ID:e1s.5ifc
それだけで伝わるとは思えんが

4770名無しさん:2017/09/26(火) 23:33:08 ID:3QtE6Qxo
>>4765

>>333 を見ると解決するかも

4771名無しさん:2017/09/28(木) 18:16:58 ID:DpRe6Wqg
see the moonなどの作品に出てくる、
「ジャンプすると出たり入ったりする針」は
どのようにすれば作れるでしょうか?

190さんが既に答えていますが、あれでは
ジャンプのボタンを押すだけで動作してしまうと思いますので質問しました。

「ジャンプのボタンを押すだけで動作してしまう」というのは、
もうジャンプが出来ない状態であっても、ボタンを押せば反応するということです。

4772名無しさん:2017/09/28(木) 21:12:59 ID:E4gPTKH.
>>4771

>>190


4773名無しさん:2017/09/28(木) 21:35:35 ID:bp5PiC0g
>>4771

プレイヤーが空中ジャンプをした後かどうかを判別すればいいんです
プレイヤーは空中ジャンプをしていれば空中ジャンプをしないことになっています

つまり?

4774名無しさん:2017/09/28(木) 23:18:36 ID:SneYd52M
ジャンプが出る条件でボタン押した時に反応するって、それまさにジャンプの条件じゃん
playJumpの中身そのままだよ

4775名無しさん:2017/09/30(土) 03:29:37 ID:cGuuPfEk
Game Maker 8.0のSurfaceについてで
surface_reset_target();
で戻した後にview_angle等view関係変数の動作が一切効かないのってどうしたら良いのでしょう…

サンプルです…
ttps://dotup.org/uploda/dotup.org1351087.zip.html

4776名無しさん:2017/09/30(土) 03:33:33 ID:cGuuPfEk
URL書き込み禁止でしたね…
申し訳ございません

4777名無しさん:2017/09/30(土) 08:26:01 ID:SneYd52M
書き込み禁止ってそういう意味じゃないと思うけど

4778名無しさん:2017/09/30(土) 17:28:45 ID:DpRe6Wqg
4771です。
どうやら事情は全部説明したほうがいいようですね…。

ここに来る前に、PlayerJumpの中身等をいじって一度自分で作ってみました。
ジャンプの判定も出来ました。それだけなら完璧だったんですが、
素早く2回ジャンプすると、pathが途中でずれてしまいました(上へ移動のpathが終了せずに下へ移動のpathが実行されてしまう)。
これの修正がもう自分だけでは出来ないと思ったので質問しました。

というわけで、path(A)の実行中に「path(B)を実行しろ」という命令が来た場合、「path(B)を実行しろ」という命令を予約(?)するにはどうしたらいいでしょうか?

4779名無しさん:2017/09/30(土) 18:48:50 ID:SneYd52M
pathは針の上下みたいな簡単な動きに使うものでは無い

4780名無しさん:2017/09/30(土) 19:18:42 ID:bp5PiC0g
>>4776

「アイワナ作成に役立つサイト紹介スレ」のレス13と14を見てもらえれば分かりますが
書き込みを禁止しているわけではありませんのでご安心を

スパム防止のためにhtt...から始まるURLを投稿したときにエラーを出すようにしているだけなので
hを抜かして投稿しても問題ありません

4781名無しさん:2017/09/30(土) 19:35:03 ID:bp5PiC0g
>>4778
gamemakerはpro版でしょうか?
pro版であれば楽な方法がありますので

4782名無しさん:2017/09/30(土) 22:47:10 ID:DpRe6Wqg
>>4781
楽な方法、ですか。知りたいですけど、残念なことにlite版です…。

4783名無しさん:2017/10/01(日) 00:56:01 ID:bp5PiC0g
>>4782
楽な方法というのがds_queueを使うという方法です
queueの概念はアイワナボスコードのレス19番にありますので確認してください

まぁ要約するとqueueを使うことで
『path(A)の実行中に「path(B)を実行しろ」という命令が来た場合、「path(B)を実行しろ」という命令を予約』
これができます

なんですがこのds_queueという機能はpro版ではないと使えません
なのでqueueを自作するという強行手段をとることによりqueueが使えない問題をクリアします

これがpro版なら楽という理由です

ただし自作してもpro版のqueueには敵いません
それはしょうがないことです

queueに最低限必要な変数
データを保存する配列
データの先頭がどこかを表す配列の位置
データの末尾がどこかを表す配列の位置
データを入れられる最大数

この4つです
データを入れられる最大数はいらないような気がしますが
何個も入れられるようにしてしまうとenqueueすればするほどメモリがどんどん少なくなってしまうので
最大数を決めて使わなくなった部分を再利用するという方法を使用します

ということでコードです
本当であればds_queueのようにIDを発行する方法がいいのですが
めんどうなのでそれをしないで作ります

[Script]

・lite_queue_init

q_head = 0;
q_tail = 0;
q_data = 0;
q_size = 10; //ここは用途に合わせて変えてみてください(引数で指定しても良い)


・lite_queue_empty

return q_head == q_tail; //tailとheadの位置が同じなら何も入っていないと定義


・lite_queue_enqueue

q_data[q_tail] = argument0;
q_tail = q_tail + 1;
q_tail = q_tail mod q_size; //使ってない部分を使いまわします為

//データが溢れてしまい 古いデータを壊している状態(スタックオーバーフロー)
if(q_tail == q_head)
{
show_error("error: stack overflow", true);
}


・lite_queue_head

if(q_head == q_tail) // データがない
{
//データがないのに無理やり取り出そうとしている
return -1; //仕方がないので-1を返しておく
}
return q_data[q_head];

・lite_queue_dequeue

var val;

if(q_head == q_tail) // データがない
{
//データがないのに無理やり取り出そうとしている
return -1; //仕方がないので-1を返しておく
}
val = q_data[q_head];
q_head += 1;
q_head = q_head mod q_size;

return val;


これで必要なスクリプトが揃い 準備ができます



◆使い方

予約
createイベントでlite_queue_init();で初期化してから
lite_queue_enqueue(/*pathBのID*/);


予約した奴の使い方に関しては
アイワナボスコードのレス19番をみたり
Scriptの中身を見て考えてみて下さい
理解して使ってもらわないと困りますのでこの部分に関しては教えません

47844783:2017/10/01(日) 08:26:28 ID:bp5PiC0g
ちょっと訂正(というかスタックオーバーフローって意味全然ちがくねえか?)

・lite_queue_enqueue

//先にqueueが満杯になってしまっているかのチェックをする
var hoge_tail;

hoge_tail = q_tail;
hoge_tail += 1;
hoge_tail = hoge_tail mod q_size;

if(hoge_tail == q_head)
{
//満杯で入らなかったのでfalse
return false;
}

q_data[q_tail] = argument0;
q_tail = q_tail + 1;
q_tail = q_tail mod q_size; //使ってない部分を使いまわします為

return true; //無事に入ったのでtrueを返す

47854782:2017/10/01(日) 18:18:44 ID:DpRe6Wqg
>>4783
コードまで書いてもらえるとは…。
ありがとうございます。

それで試してみました。queueは問題なく使えましたが、
肝心の「path(A)の実行中」の判定が出来ずにいます…。
そこで、pathが実行中かどうかを返す(示す)関数や変数を調べてみましたが、見つかりませんでした。
代用できそうなものも試してみました。が、駄目でした。

何度も聞いてばかりで申し訳ありませんが、pathが実行中かどうかを判定するにはどうしたら良いでしょうか?

4786名無しさん:2017/10/01(日) 19:32:48 ID:bp5PiC0g
>>4785
一応確認してみましたがpath関係でそれらしいのは一応ありました
もう一回調べてみてください

別の方法としてオブジェクトの速度で判定するのはどうでしょうか

47874785:2017/10/01(日) 21:05:03 ID:DpRe6Wqg
>>4786
解決しました!
本当にありがとうございました!

4788名無しさん:2017/10/03(火) 22:33:39 ID:eaGS/HJE
質問です。
room1とroom2があって、画面右上の4分の1だけroom2の(右上)部分を手前に映して、
それ以外の4分の3はroom1を映したいのですが、やり方が全く分かりません。

過去ログを見た限りではviewを2つ使うのが正解な気がしてますが、どう手を付けていいものかさっぱりです。
制作歴3ヶ月のほぼ初心者でも理解出来る様に教えていただけると助かります。よろしくお願いします

4789名無しさん:2017/10/04(水) 10:27:07 ID:bp5PiC0g
>>4775
ちょっと返信遅れてすみません

恐らく3のオブジェクトが傾いてくれるはずなのに
何故か傾かないってのが問題ってことでいいでしょうか?

んでいろいろ試した結果なんですが……

1.3のオブジェクトのdepthをマイナスにすると傾くようになる
(ずっとview_angleが45を保持しているため 2のオブジェクトも傾くような感じがするが……)

2.8.1以前のバグなのでは? と思い Studio Studio2共にテストを施した結果
3つのバージョン共に違う表示の仕方してしまい 更に謎が出てしまった
(Studio2に関しては無料版を使っているということもあり、
gmkをインポートできなかった為、手打ちで移した
もしかしたら手打ちでの打ち間違いによるこちらのミスかもしれない)

といった感じで原因が全く掴めず
結局わかりませんでした

47904789:2017/10/04(水) 10:34:32 ID:bp5PiC0g
書き忘れていましたが
if(!surface_exists(Sur)){
surface_create(640,480);
}

なんか偶然 surfaceのIDが0で作成されているようで
一見エラーが出てなく 上手くいっているように見えるのですが

if(!surface_exists(Sur)){
Sur = surface_create(640,480);
}

としないと(普通は)エラーが出て止まります

4791名無しさん:2017/10/07(土) 11:23:33 ID:1UtsXL3A
Kamilia2 Kamilia3 happil2 のようにルームに入った瞬間効果音とともに画像を出すにはどのようにすればよいのでしょうか?
できればコードの例をあげてくれませんか?
お願いします。

4792名無しさん:2017/10/08(日) 18:59:06 ID:U2Uus5ug
わからないことがあったので質問します
createイベントに
HPが5以下なら alarm3を実行する
という風に書いたのですが、動作しなくて...
どうすれば治りますか?

if (health<=5){

alarm[3]=150;

}

4793名無しさん:2017/10/08(日) 20:30:22 ID:ANpZLmYw
>>4792
healthの値はちゃんと設定されてるの?

4794名無しさん:2017/10/08(日) 21:16:27 ID:U2Uus5ug
はい、15に設定しています
ゆううつeditionです。

4795名無しさん:2017/10/08(日) 21:30:51 ID:CXie/K7c
>>4792
createイベントはオブジェクトが生成されたときに実行するので、もちろんそれでは作動しません。
弾とのコリジョンイベントに記述してみましょう。

4796名無しさん:2017/10/08(日) 21:34:12 ID:U2Uus5ug
あ、自己解決しました。
ありがとうございました。

4797名無しさん:2017/10/10(火) 14:23:57 ID:3QtE6Qxo
>>4788
別々の部屋を同時に動かすことは不可能なので、片方は止めておいてSurfaceで描写するか、
room1を巨大化してroom2を内蔵(viewを2つ使う)しないとできないです。

制作始めたばかりの人にはどちらも難しいのではないかと

4798名無しさん:2017/10/11(水) 19:38:44 ID:Ld8gVtHw
>>

4799名無しさん:2017/10/11(水) 19:42:00 ID:Ld8gVtHw
↑誤送信失礼しました

>>4797
不可能でしたか。
何が出来るか分からない新参ですのでこの様な質問になってしまいましたが、
やりたい事は画面右上の4分の1だけ画面揺れや傾き、縮小拡大等の影響を受けない様にしたいです

4800名無しさん:2017/10/16(月) 18:20:01 ID:tCA5AiCo
ぶりぶり

4801名無しさん:2017/10/16(月) 19:16:37 ID:3QtE6Qxo
>>4799
viewを2つ使うことでできますね。
view_enabled=1;view_visible[0]=1;view_visible[1]=1; //view0,1を使う
port0を{x,y,w,h}={0,0,800,600}、port1を{400,0,400,300}でセット
(ビューは番号が小さいものから順に描写されます)
view0だけを動かせば右上のview1だけ動かさずに演出を作ることができます。

4802名無しさん:2017/10/19(木) 15:57:22 ID:pL1FWA/E
耐久作ってる人いるの?

4803名無しさん:2017/10/20(金) 21:34:22 ID:sA6zO3Ss
なぁ耐久作ってくれよ

4804名無しさん:2017/10/22(日) 08:54:28 ID:4pwxB84o
プレイヤーとりんごとの距離を表すにはどうすればいいでしょうか?
プレイヤーとりんごが斜め方向に離れていても表したいです。

ちなみに自分で無理やり表したらこうなりました。
A*A = (x-player.x)*(x-player.x)+(player.y)*(player.y)
A = プレイヤーとりんごとの距離

4805名無しさん:2017/10/22(日) 09:21:18 ID:4pwxB84o
>>4804
調べたら距離を表す必要はありませんでした。。
すみませんでした。

4806名無しさん:2017/10/22(日) 22:39:02 ID:Ld8gVtHw
>>4801
遅れてすみません。レスありがとうございます。

書いて頂いたやり方でやりたい事に近づきましたが、右上の部分に他の箇所を映すにはどうすればいいでしょうか?

例えば800×900のルームにして、元の800×600はview_[0]を使い、
下に伸ばした800×300の空白の右半分をview_[1]として画面右上に表示させたいです。

また、右上に表示させた際は画像サイズも全て4分の1になってしまってますが、
これもimage_xscale等を使わずに表示させたいです

4807名無しさん:2017/11/08(水) 21:10:50 ID:UoBF5byQ
すみません、りんごで作った図形(正方形や矢印)などの式はどうやって組みますか?
調べていても「花火のように中心から飛ばす」物しか出てきません。
よければ教えてください。

4808名無しさん:2017/11/08(水) 22:35:14 ID:EZe/qLlw
>>4807

式で書けるような図形はその式を入れてあげればいいですし、
>>3929 のようにツールを使ってあらかじめ座標を取得しておく方法もあります

4809名無しさん:2017/11/09(木) 00:31:47 ID:UoBF5byQ
>>4807
回答ありがとうございます!すみません、追加で質問させていただきます。
xy平面上での式をアイワナ上での式で置くのってどうすればいいんですか?
そのまま二乗とかに当てはまる関数を式に代入してあげるんですか?

4810名無しさん:2017/11/09(木) 00:55:37 ID:UoBF5byQ
>>4808
ツールを使って作成できました!ありがとうございます!

4811名無しさん:2017/11/11(土) 16:39:33 ID:07h5L3KQ
i wanna see the moonみたいにスイッチを押すとステージの色を変えるようにするにはどうすればいいですか?
ゆううつエンジンを使っています。

4812名無しさん:2017/11/14(火) 18:01:07 ID:Nk89zegc

___________________________________________
ERROR in
action number 1
of Create Event
for object titleButton:

Error reading byte.

ってでてきたんだがどうすればいいですか。(一応バツボタン押せばタイトルに行ってプレイできますが)

4813名無しさん:2017/11/14(火) 18:53:14 ID:8I4mNBpc
>>4812
セーブかロードで何か問題起きてるかも
何もいじってない場合は一度セーブデータ消してみてください。

4814名無しさん:2017/11/15(水) 20:52:05 ID:Nk89zegc
>>4813
色々いじったけど
何も変わりませんでした。

4815名無しさん:2017/11/16(木) 11:11:14 ID:Fxv7afM.
>>4814
なにをどうしてるかわかりませんが、エラーがでてるオブジェクトのクリエイトイベントの処理をコメントアウトしたらエラーはでなくなりますか?

4816名無しさん:2017/11/16(木) 21:29:15 ID:bp5PiC0g
>>4814
コード見せてもらったほうが速いかもしれないですね
差し支えなければコード見せてください

4817名無しさん:2017/11/18(土) 11:27:34 ID:Nk89zegc
for(i = 1; i <= 3; i += 1){
if(global.a[i]=0){
global.savenum=i
if(file_exists("save"+string(i)) == true){
saveExe();
global.difficulty[i]=global.difficulty
global.clear[i]=global.clear
global.boss1[i]=global.boss[1]
global.boss2[i]=global.boss[2]
global.boss3[i]=global.boss[3]
global.boss4[i]=global.boss[4]
global.boss5[i]=global.boss[5]
global.boss6[i]=global.boss[6]
global.boss7[i]=global.boss[7]
global.boss8[i]=global.boss[8]
global.a[i]=1
global.music=0
room_goto(rTitle)
}
}
}
これですが

4818名無しさん:2017/11/18(土) 11:28:59 ID:Nk89zegc
このコードじたい変えていないですがよくわかりません

4819名無しさん:2017/11/18(土) 12:31:38 ID:Nk89zegc
そして普通に作っていてテストプレイしたら直ったっていうねw

4820名無しさん:2017/12/04(月) 06:51:43 ID:YgjmsVYg
質問です。
ボスをプレイヤーの方向へジャンプさせたいのですが、
どのようなコマンドを記述すれば良いのでしょうか?
ちなみにプレイヤーのジャンプみたいな感じです。

4821名無しさん:2017/12/04(月) 15:14:16 ID:FXe2Sj12
プレイヤーのジャンプ処理持ってくればいいんじゃないの
2段ジャンプの処理とかいらん処理も入ってると思うけど

4822名無しさん:2017/12/08(金) 11:46:53 ID:kVooFw/g
このかじゅまる様がなんでも答えてやるぞ
おまえらもっとまともなの作れよ

4823名無しさん:2017/12/08(金) 12:26:53 ID:tBNJ1FbU
すみません、タイムを正確にはかりたいと思い、game_restartを使わずにロードできるようにしたら、作動したトラップなどはリッセトしたら元の場所に戻り、変数などもリセットされます。
問題なんてないんですが、
例えば背景を縦に動かしていたり(A)、フェードイン、アウトを繰り返すオブジェ(B)、雨のようなランダムに出現するオブジェ(C)などの
変数や位置などもリセットされてしまいます。
やりたいことは、リセット(Rボタン)しても、または特定のルームにたどり着くまでリセットさせずにループさせたいです。
タイトルに戻ったりゲームを終了した場合はリセットさせたいです(変数などを初期化する)。
global変数を保存する形を試してみたのですが、なぜかエラーをはいたり保存できなかったり。
Bに関しては、rlintにオブジェを置き、persientで特定のルームにだけフェードイン、アウト、とすればできないことはないのですが。。。
できれば、わかりやすいようにそのオブジェを使用するルームに設置したいです。
とても些細なことなのですが、アドバイスをいただけないでしょうか?よろしくお願いします。

4824名無しさん:2017/12/08(金) 12:39:14 ID:tBNJ1FbU
4823に追記です。game maker 8.1 lite と yuuutu engine を使用しています。改めてよろしくお願いします。

4825名無しさん:2017/12/14(木) 21:11:21 ID:z7tkqeG6
プレイヤーと敵が接触すると両方止まり、
接触しなくなるとまた動き出す、という処理を作りたいです。

説明が下手なので図で。(〇=プレイヤー、×=敵)

  〇      ×
     ↓
   〇    ×
     ↓
    〇  ×
     ↓
     〇×
     ↓
     〇×    (〇は右へ、×は左へ行こうとしている)

こんな感じでブロックと同じように扱いたいのです。
どうすればよいでしょうか。

4826Ririry:2017/12/16(土) 00:19:06 ID:clnJFu4Y
>>4825
//以下を敵のstepイベントに記入
if(!place_meeting(x-spd-abs(player.hspeed),y,player)){//もし左にplayerが居なかったら
hspeed = -spd//spdの速度で左に移動
}else{
hspeed = 0
}
//ここまで
・spdはcreateイベントにでも記入し指定する。
・敵のparentはblockにする。

とりあえずこれで、言われている処理にはなると思います。
※-abs(player.hspeed)はめり込み防止

4827名無しさん:2017/12/19(火) 22:05:06 ID:YgjmsVYg
質問なんですが、キッド君を大きくしたボスを使用するとき、キッド君が持っている銃から
リンゴを出すようにするにはどのように設定すればいいですか?
x.yの座標で変えてもその位置で固定となってしまい 上下に動いたりしても
銃から出るようにしたいのです。助言お願いします

4828名無しさん:2017/12/21(木) 21:17:00 ID:UnC6s6ac
>>4827
ボスのキッドのスプライト(絵)を用意して、スプライトのorigin(原点)を決めていると思います(決めていなければ左上が原点になる)
リンゴの生成をinstance_create(x,y,object)でやっているとするならば、そのx,yをボスオブジェクトの原点を起点にして、
instance_create(boss.x,boss.y+100,ringo)
のように オブジェクト名.x オブジェクト名.y でそのオブジェクトのスプライトの原点からさらにずらした位置を設定することができます。
あとは細かく調整してみてください

4829名無しさん:2017/12/22(金) 00:40:10 ID:YgjmsVYg
>>4828
ありがとうございます!
おかげで思い通りの挙動をしました!

4830名無しさん:2018/01/03(水) 15:10:39 ID:bp5PiC0g
dllの使い方について
1つの関数しか定義できない問題

それぞれtest1とtest2という関数があり

test1では50が
test2では1000が

それぞれ帰ってきます


external_define("test.dll", "test1", dll_cdecl, ty_real, 0)
show_message(external_call("test1"))

だと50と表示されます


external_define("test.dll", "test2", dll_cdecl, ty_real, 0)
show_message(external_call("test2"))

だと1000が表示されます

ですが
external_define("test.dll", "test1", dll_cdecl, ty_real, 0)
external_define("test.dll", "test2", dll_cdecl, ty_real, 0)
show_message(external_call("test2"))

だとtest2を実行しているのにも関わらず50と表示します

原因が分かれば教えてください

48314830:2018/01/03(水) 15:39:06 ID:bp5PiC0g
自己解決しました

test1 = external_define("test.dll", "test1", dll_cdecl, ty_real, 0);
test2 = external_define("test.dll", "test2", dll_cdecl, ty_real, 0);

show_message(external_call(test2))

こうすれば良かったんですね



公式ページを見ながら上のコードは実装してたのですが
どうも公式ページの説明が間違っているようです

思いっきりexternal_defineは何も値が帰ってこないと明記されていますし
例文も全然間違っていました
(GM:Sになってから書き方変わったのかと思ったら違った)

docs.yoyogames.com/source/dadiospice/002_reference/miscellaneous/external_define.html
docs.yoyogames.com/source/dadiospice/002_reference/miscellaneous/external_call.html

一応上の2つのページの説明は間違っているみたいなので警告出しときます

4832名無しさん:2018/01/07(日) 09:24:19 ID:ywJKiwYU
すいません、耐久でよくある四角形などの図形弾幕はどのようにすればできますか?
よかったら教えていただけますでしょうか。

4833名無しさん:2018/01/07(日) 13:26:05 ID:pVrWmk8Y
>>4832
三角関数わからないから有志の方が作った弾幕作成ツール使うといいと思います

4834名無しさん:2018/01/07(日) 13:26:36 ID:pVrWmk8Y
三角関数わからないならです。誤字失礼。

4835名無しさん:2018/01/07(日) 19:02:35 ID:ywJKiwYU
>>4833
ツールがあったのでそれを使ったら出来ました!
ありがとうございます!

4836名無しさん:2018/01/09(火) 18:50:41 ID:CkoCnZBs
>>4832 えるなちゃんとyouさんがツールを公開してたと思う

4837名無しさん:2018/01/14(日) 02:43:51 ID:rBbl9.VM
画面を白くフラッシュさせてからルーム移動するにはどうすればいいですか?
光らせる用のオブジェクトを生成してルーム移動のイベントを入れてもなぜか上手くいきません;

4838名無しさん:2018/01/14(日) 12:34:18 ID:bp5PiC0g
>>4837
どう上手くいかないんですか?

・そもそも白くならない
・白くなるけどルーム移動しない
・ルーム移動するけど一瞬で白から元の色に戻るので違和感がひどい

こんな感じにいろいろと考えることが出来るのでそこらへんを具体的に説明してほしいのですが……

4839名無しさん:2018/01/15(月) 14:43:36 ID:YEc7shPE
質問者のレス遅いのなんなの

4840名無しさん:2018/01/20(土) 17:56:18 ID:ywJKiwYU
耐久での質問です。
カーブしながら飛んでいくリンゴの作り方が分かりません。
前のレスを読んだのですが、良くわかりませんでした。
出来ればくわしくお願いします。

4841名無しさん:2018/01/20(土) 18:21:16 ID:tdBMXXng
>>4840
前のレスとはどれを指すのか。
どういった方法で飛ばそうと考えているのか。
実際にやろうとしてみてどこまで自分で作れるのか。
できない結果どういう状態になるのか。

いろいろ情報が足りないので質問者の方こそ”出来ればくわしくお願いします。”

>>3564

4842名無しさん:2018/01/21(日) 09:32:17 ID:ywJKiwYU
>>4841
そうですね、申し訳ございませんでした。
自分はあまりよく読んでなかったようです。
>>3562を読んだら分かりました。
ありがとうございます。

4843名無しさん:2018/01/21(日) 21:10:32 ID:ywJKiwYU
誤字りました。
正しくは>>3564です

4844名無しさん:2018/01/21(日) 23:48:09 ID:sWA.cf.Y
テストプレイをする際、特定の場所からスタートするにはどうすればいいですか?

4845名無しさん:2018/01/21(日) 23:48:10 ID:sWA.cf.Y
テストプレイをする際、特定の場所からスタートするにはどうすればいいですか?

4846名無しさん:2018/01/22(月) 01:52:43 ID:/jaIkwgE
タイムラインのオブジェクトのpositionを設定

4847名無しさん:2018/01/24(水) 21:59:07 ID:sWA.cf.Y
>>4846
ありがとうございます!

4848名無しさん:2018/01/24(水) 22:57:51 ID:hJ5MZSSI
ボスに弾が当たった時、弾が当たった位置に動かないリンゴが出現するような設定にしたいのですがやり方が分かりません。
分かる方がいたら教えてください。

4849名無しさん:2018/01/24(水) 23:10:29 ID:oSiN7ffE
>>4848
「弾が当たるとHPが減る」というコードが書いてあるところに、「接触した弾の座標にリンゴを生成する」というコードをいれるといいと思います

4850名無しさん:2018/01/26(金) 20:07:59 ID:hJ5MZSSI
>>4849
すいません、調べてみたんですが「接触した弾の座標」を表す記述の仕方が分からなかったので教えてください。

4851名無しさん:2018/01/26(金) 21:22:18 ID:qdwI1e8.
>>4850
接触したオブジェクト名.x
接触したオブジェクト名.y

4852名無しさん:2018/01/26(金) 21:38:25 ID:rhsw/74E
弾なんだからオブジェクト名よりもインスタンスIDの方がよい

4853名無しさん:2018/01/26(金) 21:46:23 ID:9KYdl5Es
>>4851
最初はそれでやってみたんですが、bulletで参照するとボスに衝突した弾はその時消滅する設定にしているので
参照相手がいなくなって左上のところに出現するか、連射してる時は飛行中の他の弾の位置に出現するのでどうもうまくいきません…
仮に消滅しない設定に変更しても、弾を連射していて、最初の弾が消える前に2発目の弾がボスにあたったりしてもおかしなことになりそうな気がします
逆に弾の方にそのボスと衝突した時リンゴを発生させるような設定にした方がいいんでしょうか?

4854名無しさん:2018/01/26(金) 21:59:36 ID:oSiN7ffE
>>4853
オブジェクト名で座標を取得すると、一番最新の(インスタンスIDの新しい)オブジェクトの座標になってしまうので不適です。
ボス側でbulletとのコリジョンイベントを設定していると思うので例えば、

HP-=1//このオブジェクトのHP(変数)を1減らす
with(other)instance_destroy()//other(この場合は当たってきた弾を指す)にinstance_destroy()を実行させる

こんな感じになっていたら、二行の間に instance_create(other.x,other.y,リンゴ) を入れるだけです

4855名無しさん:2018/01/26(金) 22:09:57 ID:9KYdl5Es
>>4854
なるほど、やってみたらできました!
衝突した時の座標は衝突したオブジェクトではなくotherで記述することと、
それを消滅をさせる記述よりも先に書いておく必要がったんですね
ありがとうございました!

4856名無しさん:2018/02/15(木) 13:52:38 ID:aLW/iOPI
ワープを使いたいんですが座標がわかりませんどこに書いてますか?

4857名無しさん:2018/02/15(木) 14:08:32 ID:bp5PiC0g
Room Editor(タイルやブロックなどを配置する場所)のその画面の↓に
[x:32 y:32]など書いてあると思うのですがそれが座標です
マウスポインタの位置(正確にはマウスがあるマス目の左上)を下の座標はさしています
32ずつ動くのはSnapの影響ですので随時Snapの値を変えてください
(Altを押しながらマウスを動かすでもOK この場合は1ずつ動く)

4858名無しさん:2018/02/19(月) 00:54:52 ID:GysmMK16
コードではなく、画像素材作成についての質問で申し訳ないのですが、
以下の画像のようなものを綺麗に(光っている演出含め)切り抜く方法はあるのでしょうか?
tps://www.spriters-resource.com/fullview/38604/

フォトショもあるのですが、調べても全然わからなかったので質問させていただきました

4859名無しさん:2018/02/19(月) 12:02:33 ID:urSPXd7g
どうでもいいけど前回質問に答えてくれた方は無視ですか?

4860名無しさん:2018/02/19(月) 13:36:22 ID:GysmMK16
本当だ・・・その日のうちに解答してくださってるのにお礼も言えてない・・・
今更で大変恐縮ですが、>>226さんありがとうございました

4861名無しさん:2018/02/19(月) 14:24:02 ID:bp5PiC0g
>>4858
gimpであれば「色を透明度に」でできるんですがフォトショだとちょっと分からないです
クロマキー・カラーキー・ルミナンスキー辺りで調べればなんかしら出てきそうではありますが

4862名無しさん:2018/02/19(月) 14:29:52 ID:urSPXd7g
>>4858
切り取りといえばpaint.netの魔法の杖が有名ですが光具合までうまく切り取れるか微妙ですが試してみる価値はあるかもしれません
paint.netはフリーのイラストツールです

4863名無しさん:2018/02/19(月) 17:45:30 ID:GysmMK16
>>4861,>>4862
ありがとうございます!フォトショではプラグインを導入するか、少し面倒な手順が必要そうだったので
gimpを導入してみたところあっさり解決できました!
とても助かりました、本当にありがとうございました!

4864名無しさん:2018/05/10(木) 01:28:11 ID:rF8X.KDk
yuutueditionでの針の飛ばし方がわかりません
freetrigerにtrg=01;
と打ってfall_freeに
trg=01;
vspd=5;
と打ったのですがびくともしません
助けてください...

4865名無しさん:2018/05/10(木) 16:18:26 ID:1ufhr60k
頑張れ

4866名無しさん:2018/05/10(木) 22:14:51 ID:qtZr2P3w
vspdじゃないでしょ

4867名無しさん:2018/05/12(土) 11:19:19 ID:bp5PiC0g
なんかGM:Sが今年の7月31日で更新止まるらしいですね
どっかのタイミングでGM:Sがダウンロードできなくなる可能性あるんで
GM:Sで作りたい人は早めに公式からダウンロードすることをお勧めする
今後はGMS2だけになるのか...

ttps://www.yoyogames.com/blog/461/gamemaker-studio-1-4-eol-upgrade-30-off

4868名無しさん:2018/05/17(木) 17:36:28 ID:/uPjeKAo
うんちぶり

4869名無しさん:2018/06/03(日) 13:21:31 ID:JW5dljQ6
HPゲージの作り方を教えてください。
自分で作ろうとしたんですが、表示されなくて困っています。

4870名無しさん:2018/06/03(日) 21:45:42 ID:bp5PiC0g
>>4869
表示されない原因は以下の事が考えられます

1.オブジェクトを配置していない
2.オブジェクトを配置しているが、画面外に表示されている
3.オブジェクトを配置しているが、alphaが0になっている
4.drawイベントに何か書かれており、自身を描画する関数を追加していない
5.drawイベントにちゃんと書いたが、実はスプライトの名前が「hp」になっており、そのせいで値がおかしくなっている
6.そもそもhpが0になっている
7.enemy.hpと書くつもりがタイプミスにより 値が0になっている
8.hpのスプライトを作っていない
9.hpのスプライトを作ったが設定していない

まだありそうですが今思いつくのはこのぐらいです
1つずつ確認してみてください

4871名無しさん:2018/06/03(日) 22:27:03 ID:NYFstMsU
>>4869 へ

>>498

48724869:2018/06/04(月) 16:39:17 ID:JW5dljQ6
表示はされたんですが、ダメージを与えてもゲージが減りません。どうすればいいのか・・・

48734869:2018/06/04(月) 16:42:54 ID:JW5dljQ6
あ、ちなみにimage_xscale=〇〇.hp/5;って打ちました。ボスの名前は〇で伏せておきます。

48744869:2018/06/04(月) 16:43:55 ID:JW5dljQ6
↑stepイベントです。

48754869:2018/06/04(月) 17:02:39 ID:JW5dljQ6
エンジンはゆううつエンジンです。

4876名無しさん:2018/06/04(月) 17:56:55 ID:4qABttJA
HP減らす処理が入ってないとか、変わらないって事はhp/5の結果が変わってないんじゃないかと思う

4877名無しさん:2018/06/05(火) 10:01:22 ID:bp5PiC0g
>>4873
hpを表示するオブジェクトがおかしいのか
ボスのhpがおかしいのか
これらを手っ取り早く見たいのであれば

image_xscale=(hoge.hp-10)/5;

とすればいい
hpバーが変わればボスのhpがおかしい
hpバーが変わらなければhpを表示するオブジェクトがおかしいと分かる



因みに何か適当な文字に置き換える場合
「hoge」にすることをおすすめする

hogeはプログラムのいろんなところで使われていて
hogeを見ればすぐに これは特に意味の無い名前だ と分かるので

4878名無しさん:2018/06/06(水) 11:50:12 ID:vZCsgZJ6
なんでここの質問者ってレス返さなかったり遅かったりするの?

4879名無しさん:2018/06/06(水) 12:07:19 ID:r2/foe6.
2chmateにしたらば登録出来るの知らないんでしょ

4880名無しさん:2018/06/06(水) 12:08:21 ID:r2/foe6.
このように見やすくなる
ttps://i.imgur.com/LIRhiKU.png

4881名無しさん:2018/06/15(金) 15:56:52 ID:Yoehci1.
アイワナを作ろうと思ってゲーム中にロゴが出ないgamemaker8.0liteをダウンロードしたのですが、
念の為gamemaker8.1liteをダウンロードして最新ゆううつエンジン2.16で確認したところ、こっちもゲーム中のロゴが出ませんでした。
>>2214など、数年前にほぼ全ての人が製品版のgamemakerを購入するしか無理みたいな事を書かれてきてますが、これはどういう事でしょうか?

8.1liteをダウンロードしたサイト→ ttps://game-maker.jp.uptodown.com/windows

4882名無しさん:2018/06/15(金) 16:30:15 ID:c/.EfSak
うろ覚えだけど8.1Liteでもロゴを強制的に表示させないやり方があったような...

4883名無しさん:2018/06/16(土) 19:45:08 ID:bp5PiC0g
一応確認として
C:\Users\ユーザー名\AppData\Local\GameMaker8.1
にlicense.plistというファイルがないか確かめてください
そこに該当のファイルがあれば、pro版を所持していることになります

安全にダウンロードできる環境、かつgamemakerが入っていない環境を
用意できていないので該当ソフト確認が出来てないです

4884名無しさん:2018/06/17(日) 00:00:26 ID:Yoehci1.
>>4883
Cドライブをくまなく探しましたがその様なファイルは見受けられませんでした。
一応lite版の証明なのか分かりませんが、gamemakerを起動するたびにpro版の購入を勧められる画面のようなものが表示されます。

4885名無しさん:2018/06/17(日) 16:14:35 ID:JW5dljQ6
質問です。カーブ弾の作り方を教えてください。

4886名無しさん:2018/06/17(日) 17:59:56 ID:7ML7XGkE
>>4885
stepイベントに
direcrion+=1を入れてみてください
数値によりカーブ具合が変わります

4887名無しさん:2018/06/18(月) 14:06:58 ID:QQzb/nVo
>>4884
ロゴはexe出力した場合にのみ挿入されますよ
GameMaker上で実行してもロゴは挿入されません

4888名無しさん:2018/06/18(月) 15:02:33 ID:W4uen4mA
誰か8.1Liteでロゴの消し方公開してる人いたよね
誰か忘れた

48894885:2018/06/18(月) 21:24:38 ID:JW5dljQ6
>>4886
ありがとうございます!!!

48904884:2018/06/18(月) 22:30:37 ID:Yoehci1.
>>4887
確かにそうなりました。ありがとうございました。

4891名無しさん:2018/07/21(土) 19:53:22 ID:JW5dljQ6
分かりにくくてすみません。
右に弾を飛ばしたときスプライトも右を向き、左に弾を飛ばしたときにスプライトも左を向かせるにはどうすればいいですか。

4892名無しさん:2018/07/21(土) 23:25:14 ID:qtZr2P3w
このスレ内にあるので頑張って探してください

48934891:2018/07/22(日) 11:37:36 ID:JW5dljQ6
>>4892
約4900個の中から探すのか、まだ500個、疲れる。

4894名無しさん:2018/07/22(日) 20:05:30 ID:8GsLRdOA
検索くらい覚えましょうね

48954891:2018/07/22(日) 21:20:20 ID:JW5dljQ6
ど、どこに検索機能があるんですか。

4896名無しさん:2018/07/22(日) 22:04:38 ID:bp5PiC0g
>>4895
Ctrlを押しながらFを押す
すると上に入力できる欄が出てくるので
そこに任意のワードを打ち込む

48974891:2018/07/23(月) 05:52:49 ID:JW5dljQ6
私は8,0のliteなのでスプライトの角度を変えながらやるしかないのか

4898名無しさん:2018/08/09(木) 10:16:01 ID:uVstp5BA
今うんち弾幕を作成していますが、やっぱり色はランダムより茶色固定のがいいんでしょうか?

4899名無しさん:2018/08/10(金) 03:04:05 ID:YgjmsVYg
>>4898
レインボーうんこというのも美しく、意外性もあり良いと思いますが、
うんこの生々しさ、臭いを重視するならばやはり茶色のほうがいいかと思います。
アイワナの方向性によって変わると思います。

4900名無しさん:2018/08/10(金) 09:21:19 ID:MynHDrDg
>>4899
ありがとうございます。茶色にしてみたところ納得行く出来栄えになりました。
レインボーだと何かわからずただただ目が痛いだけでした。

4901名無しさん:2018/08/11(土) 10:41:36 ID:JW5dljQ6
kill the Guyみたいに下向きの針で上に乗ると下にいって、それ以外に触れると死ぬ針の作り方を教えてください

4902名無しさん:2018/08/11(土) 10:54:31 ID:JW5dljQ6
自己解決

4903名無しさん:2018/09/01(土) 10:28:19 ID:Ud4XZDOs
yuuutu engine を使用しております。

上向きの針を上向きにニュッと伸ばすにはどうすればいいのでしょうか...

既出でしたらすみません。ここにあるよって教えていただけると嬉しいです。

4904名無しさん:2018/09/01(土) 13:13:43 ID:sdU52lUE
>>4903
ニュッが曖昧でわからないのでもう少し詳しくお願いします。
例えば、ブロックの裏に針が隠れていてあるトリガーにより上向きに飛ばしブロックの上にでたところで止める
または、ブロックの上に乗っている針のy軸のみ伸ばす(縦長にする)
などです。

4905名無しさん:2018/09/01(土) 17:58:33 ID:Ud4XZDOs
申し訳ありません。
後者の"ブロックの上に乗っている針のy軸のみ伸ばす"を
やりたいと思っております。

4906名無しさん:2018/09/01(土) 18:03:50 ID:Ud4XZDOs
↑の補足です。
>>4130
を読んで伸ばすところまではできました。
しかしimage_yscale +=0.01
をすると下に伸びていきます...
-だと薄っぺらくなります。
あと、止まらないです ...

4907名無しさん:2018/09/01(土) 18:08:49 ID:Ud4XZDOs
何度もすみません。
↑の 止まらないです... は
特定の位置で止めようとしているのですが、止まらないです ...
のことです。

4908名無しさん:2018/09/02(日) 21:51:25 ID:bp5PiC0g
>>4906
下に伸びるというのが意味が分かりません

想定できる範囲として
針のoriginがおかしいぐらいしか

4909名無しさん:2018/09/03(月) 01:58:08 ID:SF7gH9cc
針は左上を中心に伸びるからでは
伸ばす速度と同じ速度で針全体を移動させないと

4910名無しさん:2018/09/03(月) 02:48:15 ID:Ud4XZDOs
>>4906
>>4909

伸ばす速度と同じ速度で針全体を移動させたら
理想どおりのことをすることができました
ありがとうございます

4911名無しさん:2018/09/03(月) 02:51:00 ID:Ud4XZDOs

>>4906 ではなく >>4909 でした
本当に何度も申し訳ありません

4912名無しさん:2018/09/07(金) 02:18:30 ID:JWqwh74I
>>4906 の者です。
連投申し訳ないのですが、質問です。

最近、ゆううつエディションからねころんエディションに乗り換えました。
すると、設定が違うのかブロックに埋まった針に当たり判定が生じてしまいます。
解消法教えていただけると助かります。

(製作を開始して間もないのでわかりやすく教えていただけると嬉しいです。)

4913名無しさん:2018/09/07(金) 09:18:48 ID:YVtMkfdA
初心者なら無闇にエンジン変えない方がいいと思います

4914名無しさん:2018/09/07(金) 12:05:26 ID:0sCV4V3s
backgroundの透過度をコードで設定するのが分かりません
タイルの画像(blockに被せる物)をコードで設定したくて
draw_background_part(タイルの名前,0,0,16,16,x,y)などとしたのですが
針などのオブジェクトよりも手前に表示されてしまいます
タイルの名前.depth=100000でも変更できませんでした

4915名無しさん:2018/09/07(金) 12:24:11 ID:0sCV4V3s
手動で置いていくしかないのでしょうか

4916名無しさん:2018/09/07(金) 13:07:52 ID:Zj/fvg4s
>>4914
ならspriteに追加してobjectとして扱えば?
そうすればdepthも効きますよ

4917名無しさん:2018/09/07(金) 15:32:25 ID:0sCV4V3s
>>4916
とりあえずオブジェクトに変えることで解決しました
ありがとうございます

4918名無しさん:2018/09/07(金) 15:37:46 ID:bp5PiC0g
>>4914
そもそもタイルに使う画像はdraw_background系統を使う必要がありません

tile_addを生成したいタイミングで使ってください
そしてdrawには何もいりません

因みに
m_tile = tile_add(...);
と変数に入れておくと

tile_set_alpha(m_tile, (sin(current_time/5)+1)/2);
こんな感じで点滅ができます



>>4916
objectが多くなってしまうのでそれに関しては得策ではないです

4919名無しさん:2018/09/07(金) 16:26:13 ID:Zj/fvg4s
キルカミ3なんかオブジェクト数2000個以上あるんだから数なんて気にすんな

4920名無しさん:2018/09/07(金) 17:57:28 ID:0sCV4V3s
>>4918
ありがとうございます!
depthの設定も一つの関数でできるんですね

4921名無しさん:2018/09/07(金) 18:21:24 ID:uTcYn1Sg
キルカミ3のオブジェクト数なんで知ってんの?

4922名無しさん:2018/09/07(金) 19:05:22 ID:E/3lQYAA
手で数えてるんだよ

4923名無しさん:2018/09/08(土) 10:13:29 ID:JWqwh74I
>>4913
えっと...ねころんeditionでやるのはあきらめたほうが良いということでしょうか?

4924名無しさん:2018/09/08(土) 18:10:01 ID:pWN90EVw
>>4923
オブジェクトの優先順位は恐らくオブジェクトが作られた順番によると思います。
ねころんに変えて新しくブロックを作ってませんか?

判定が 針→ブロック となると死んでしまうので ブロック(→針)にする必要があります。

元々あるブロックを使うか、針も新しく生成しなおすのが簡単かと思います。

4925名無しさん:2018/09/08(土) 18:41:30 ID:JWqwh74I
>>4923
できました!
わかりやすく説明していただきありがとうございます!

49264918:2018/09/12(水) 12:23:59 ID:I0j4iYK.
今気づいたのですが
objectではなくinstanceが正しいですね
申し訳ないです

後 まぁおまけ程度ですが
・タイル
・タイルと同じ画像を設定しただけのobject
の2つでどの位速度が違うかのテストをしてみました
1フレームに1つずつ生成していき
30fpsを下回るまでの数を調べた結果
objectが約40000個
タイルが約60000個
と約1.5倍ぐらい処理速度の違いが見れました

ただ今回のは処理が全く書いてないobjectなので
処理が書いてあるobjectだと
正直速度がどうなるのかは検証を重ねないと分からないですね.....

4927名無しさん:2018/09/18(火) 10:07:32 ID:0sCV4V3s
以下の条件を満たすブロック兼リフトを作りたいのですが
・playerが乗っていると(上から衝突すると)playerが動きについてくる
・左右と下から衝突するとめり込まずに押し出される
ゆううつエンジン内蔵のobj_liftBlockはどうもめり込んでしまうようです

4928名無しさん:2018/09/18(火) 15:48:51 ID:bp5PiC0g
>>4927
「めり込んでしまう」や「押し出す」という部分をもう少し具体的に説明が欲しいです
(どのように押し出すかで対処法が変わりそうなので)

あと一応ゆううつエンジンのver2.17で挙動を確認した結果
通常のブロックとliftBlockに挟まれた時に全く動けなくなるという現象を確認しましたが
めり込むとはそれのことでしょうか?

4929名無しさん:2018/09/18(火) 16:16:15 ID:0sCV4V3s
>>4928
初速度を
hspeed=3;
vspeed=3;
とした時、空中でブロックに触れるとブロックに密着したまま止まってしまい、また上に乗ると振り落とされてしまいました
速度が3以上で、かつ斜めに動かした時に発生します

押し出すとは
ブロックに触れたplayerが押し戻されるような感じです
liftBlockは速度が遅ければ問題なく動くのでそれと全く同じ動作で構いません

4930名無しさん:2018/09/18(火) 18:19:07 ID:bp5PiC0g
>>4929
そうですね.....

「空中でブロックに触れるとブロックに密着したまま止まってしまい」
これに関してはこちらでは確認できませんでした
もう少し詳しくその時の状況をお願いします
(エンジンの制作者にバグの状況を見てもらう為)



「上に乗ると振り落とされてしまいました」
こちらは確認できました
movingPlatformで同じようにhspeed, vspeedを共に3にしても振り落とされないことを考えるに
明らかにliftblock内の問題ではないかと思われます

ただこれに関してはエンジンの制作者に直してもらったほうが早いと思いますので
バグの報告をさせていただきます



一応応急処置としまして
liftblockのStepイベントのコード

22行目の
if(place_meeting(x,y+vspeed-player.vspeed-1,player)){
の下あたりに

player.x += hspeed;
と付け加えて貰うと
多少プレイヤーが左右にガタガタしてしまうのですが
振り落とされなくなるのを確認したので
ステージの確認をどうしても早くしたいという場合は
この方法をお使いください

4931名無しさん:2018/09/18(火) 19:20:46 ID:0sCV4V3s
playerが引っかかるとブロックごと止まってしまいます
横からぶつかった時めり込んだのですが、今確認したところ起こらず発生する条件が複雑なようです
ただブロックの右上と左上の角へぶつかった場合は高確率でめり込みます。横ではなく角です

ご回答のコードを追加してみたところ、h3v3の場合にはうまく行ったのですが
全ての角度と速度には対応できないようです
やはり落とされてしまうか今度は上からのめり込み状態で止まってしまいました

speed=3
direction=120
で落とされてしまい

speed=3;
direction=-45
で上からめり込んでしまいました

やはりエンジンを修正してくださるのを待つばかりですね

4932ゆううつ:2018/09/18(火) 23:52:17 ID:SF7gH9cc
>>4930-4931
報告ありがとうございます。
申し訳ないんですが、ブロックの挙動はちょっと直しようがないので使える範囲で使っていただきたいです。実は斜めの動きも想定してないです。
元々ブロックの挙動は謎が多すぎて、リフトブロックもようやくなんとか使える物が作れたというレベルなので、自分の技術ではこれ以上の動作は作れそうにないです。

4933名無しさん:2018/09/19(水) 00:09:34 ID:0sCV4V3s
>>4932
ありがとうございます。分かりました。エンジン製作者でさえ難しい技術なんですね
自力で何とかします

4934名無しさん:2018/09/19(水) 16:55:41 ID:JWqwh74I
質問です。
instance_createで生成したオブジェクトにcreation codeを設定することは可能でしょうか?

4935名無しさん:2018/09/19(水) 16:59:36 ID:JWqwh74I
>>4934 です
すいません検索不足でした!
調べたら出てきました...
申し訳ないです...

4936名無しさん:2018/09/19(水) 19:52:49 ID:0sCV4V3s
リフトに摩擦を付けて少しずつ減速させたいのですが、
単にfriction=0.03などとしてもリフトのスピード制御にはhspeed、vspeedだけではなくyspeedもあるせいでうまく行きません

4937名無しさん:2018/09/20(木) 01:06:33 ID:bp5PiC0g
>>4931
solidを使用しないブロックを作ってまま放置していたことを思い出しまして
その自作ブロックでliftblockの作成にトライしたら案外すんなりと行けました
(コードはゆううつエンジンを想定)

コード内のスペースが消えるとめんどそうなので
今回はpastebinにコードを載せました
こちらをご覧ください

pastebin.com/HkbxWGym



申し訳ないのですが
これを使った場合のリフトの速度の指定は
xspeed yspeedという変数で速度を指定してください

実はこの自作ブロックですが
・このブロックに頭をぶつけながらセーブしても詰まない
・自作ブロックの1つ変数を正しく指定すると一方通行ブロックも作れる
などのメリットもあります
(ただしすり抜けバグが起こる可能性もあるので無駄に多用しないように)

49384937:2018/09/20(木) 08:47:56 ID:bp5PiC0g
訂正

自作ブロックの1つ変数を正しく指定すると一方通行ブロックも作れる

collisionLimitという変数を正しく設定すると一方通行ブロックも作れる





if (bbox_left <= other.bbox_right-1 &&
...

あとコードを見てもらうと何故かこれだけ-1されてると思いますが
これをしないとたまにブロックをすり抜けてしまうため
こうなってます

4939名無しさん:2018/09/20(木) 10:23:55 ID:qzqHg7FY
playerにぴったりくっつくオブジェクトの作り方を教えてください。
リボンのように追尾する形ではなく、左上ならずっと左上にあるような形です
playerのスプライトを変えることはできればしたくないです。

4940名無しさん:2018/09/20(木) 10:48:32 ID:XevQZUCQ
stepイベにプレイヤーの座標から算出した座標をセットしてみは?

4941名無しさん:2018/09/20(木) 11:26:56 ID:qzqHg7FY
>>4940
それはやってみたのですがやはり若干のずれがあり、リボンのように追尾する形になってしまいます。

4942名無しさん:2018/09/20(木) 11:41:25 ID:XevQZUCQ
1/50秒毎にセットすればずれないと思いましたが見当違いでしたね失礼致しました。

4943名無しさん:2018/09/20(木) 12:15:41 ID:1kt8YrVA
インスタンスの座標が決定されるのがstepイベントより後なのでendstepに書けば出来るはずです

4944名無しさん:2018/09/20(木) 15:09:08 ID:qzqHg7FY
>>4942 >>4943
ありがとうございました、できました!

4945名無しさん:2018/09/22(土) 18:05:20 ID:JWqwh74I
質問です。
ジャンプ(、2段ジャンプ)をするたびに入ったり出たりする針の作り方を教えてください。(Shiftではないです。)
すでに >>4783 などで説明してくださっているのですが、自分の頭ではds_queueを自作するのは無理でした...
ですので、Proのもともと入っているものを使ってやりたいのですがどうすればいいのかわかりません。
queueについても詳しく教えていただけると嬉しいです。

49464937:2018/09/22(土) 20:29:13 ID:bp5PiC0g
>>4945

queueの概要をもう少し詳しく書いてみます
アイワナボスコード16番のスレの補足として書きますのでそちらも見てください
(>>4783では何故か19番と書いてますね 普通に気づいてませんでした)


下はqueueの中身です

先頭ㅤㅤㅤㅤㅤ後尾
, , , , , , , ,

簡略化していますがds_queue_createをした直後のデータです
空白は何もデータが入っていないことを示しています



上のqueueにds_queue_enqueueを使って
順番に1, 2, 5, 7, 9を入れた場合

先頭ㅤㅤㅤㅤㅤ後尾
1,2,5,7,9, , , ,

このように
必ず後ろに新しいデータが入ります
こっからds_queue_dequeueを実行すると

先頭ㅤㅤㅤㅤㅤ後尾
2,5,7,9, , , , ,

このように数字を取り出すと同時に
先頭から順にqueueの中からデータが無くなります


先頭ㅤㅤㅤㅤㅤ後尾
2,5,7,9, , , , ,

ds_queue_dequeueと同じような関数で
ds_queue_headというのがあります
上の状態でds_queue_headを実行すると


先頭ㅤㅤㅤㅤㅤ後尾
2,5,7,9, , , , ,

何も変化が起きません
ds_queue_headというのは
先頭のデータを消さないで先頭の数字を取り出します

これで分かりますか?




proのqueueを使う場合は最初に
ds_queue_createを使います

queue = ds_queue_create();
でqueueが作られます

その後に
ds_queue_enqueue(queue, 2/*(任意の数字)*/);
ds_queue_dequeue(queue);
ds_queue_head(queue);
などを使ってください

使い終わったら必ず
ds_queue_destroy(queue);
を実行してください

流れとしてはこんな感じです

その他の細かい関数は正直
gamemakerまとめwikiのqueueのページを
見て貰ったほうが早いと思います
そこまで難しい構造はしていないので

4947名無しさん:2018/09/22(土) 21:43:17 ID:JWqwh74I
>>4946
とても丁寧に教えていただきありがとうございます!!
queueの仕組みがよくわかりました!
試行錯誤して試してみます!本当にありがとうございました!

4948名無しさん:2018/09/23(日) 12:21:47 ID:0sCV4V3s
>>4936にまだ回答をいただいていないのでお願いします

4949名無しさん:2018/09/23(日) 20:21:18 ID:2pEv6mJc
>>4936
どういう動作をさせているんですか?

4950名無しさん:2018/09/24(月) 16:39:29 ID:0sCV4V3s
>>4949
リフトに初期速度を与えると直線に動き徐々に減速しながら止まるようにしたいのです
生成イベントでfriction=0.03と書いたのですが
動いている途中で僅かに上にカーブしているように見えます

49514937:2018/09/24(月) 17:45:57 ID:bp5PiC0g
>>4950
frictionはyspeedのせいで使えないですね……

vspeed = sign(vspeed) * max(abs(vspeed)-_frc, 0);
yspeed = sign(yspeed) * max(abs(yspeed)-_frc, 0);
hspeed = sign(hspeed) * max(abs(hspeed)-_frc, 0);

方向と速度に切り分けて 速度側の値を任意の値でひき続けます
負の方向に行かないようにmaxを使って0未満になったら0に設定します

ただこれだと縦と横で単純に引いているだけなので
frictionで指定した値よりも減速が早くなります(斜めに動いている時のみ)
気になるのであれば修正してみてください

4952名無しさん:2018/09/24(月) 19:18:42 ID:0sCV4V3s
>>4951
ありがとうございます
しかし試したところ、止まる直前で縦か横と平行な角度になってしまいます
speed=5;
direction = random(360)
と角度をランダムにして確かめました

4953名無しさん:2018/09/24(月) 20:27:29 ID:bp5PiC0g
>>4952
そういえばyspeedとvspeedの挙動に翻弄されて上手くいかないので
しばらく放置していたことを思い出しました
(にしても>>4951のコードはひどいが)

試行錯誤した結果最終的にこのようなコードになりました

var _dis, _dir;
_dis = point_distance (0, 0, hspeed, vspeed+yspeed); //これが速度
_dir = point_direction(0, 0, hspeed, vspeed+yspeed); //これが角度

_dis = max(_dis-_frc, 0); //ここで速度を原則

hspeed = cos(degtorad(_dir)) * _dis;
if(_dir > 180)
{
vspeed = abs(sin(degtorad(_dir))) * _dis; //確実にプラスしか入らないようにする
yspeed = 0;
}
else
{
yspeed =-abs(sin(degtorad(_dir))) * _dis; //確実にマイナスしか入らないようにする
vspeed = 0;
}

4954名無しさん:2018/09/24(月) 21:37:46 ID:0sCV4V3s
>>4953
うまく行きました。ありがとうございます!
かなり複雑なコードなんですね

4955ソーダ:2018/09/30(日) 13:08:22 ID:Z0sZH2Ao
アイワナの耐久を使っていたのですが、ネギを上下からランダムに飛ばすように作るにはどうしたら良いのでしょうか? ゆううつエンジンに最初から入っていた耐久のタイムラインを調べて数値を変えたりしてやっていたのですが、できませんでした。上向きと下向きのネギのオブジェクトはすでに用意してあります。

4956ソーダ:2018/09/30(日) 13:10:08 ID:Z0sZH2Ao
すいません 使っていたではなくて作っていたです。

4957名無しさん:2018/09/30(日) 17:11:17 ID:LquVKIdU
>>4955
オブジェクトを作って、createイベントに
alarm[0]=1、

alarm[0]イベに
alarm[0]=5 (ここの数値はネギの量に影響50で1秒)
a=instance_create(random(800),0,ネギのオブジェクト) 
a.direction=270
スピードの設定や座標の微調整はご自由に
これが上から下に向かっていくオブジェクトの作成方法
下かの場合はy座標を608にして、directionを90に変えればおけ

んで、このオブジェクトを画面に置けばおけ

4958ソーダ:2018/10/01(月) 20:50:34 ID:PIirNIXw
ありがとうございます!!!こんなに早く返信来るとは思っていませんでした。

4959ソーダ:2018/10/01(月) 21:36:56 ID:PIirNIXw
もう一つ質問なのですがタイムラインでねぎを上下ランダムに飛ばすにはタイムラインのほうはどのようなコードを打てばいいのでしょうか?

4960名無しさん:2018/10/01(月) 22:55:07 ID:iKCNtgbs
>>4959
4957のオブジェクトをタイムラインで
instance_create(0,0,オブジェクト)するだけだよ
止めたいところのタイムラインで、
with(オブジェクト){
instance_destroy()
}

を入れてね

4961ソーダ:2018/10/02(火) 19:27:02 ID:ABjuafAU
何回も教えていただき本当にありがとうございます!!またわからなくなった時は聞きに来ます!

4962ソーダ:2018/10/02(火) 19:43:08 ID:ABjuafAU
また壁にぶち当たってしまいました。教えてくださった方の通りに打ったら、ネギはどんどん大量に生産されてしまいました。どうすればいいでしょうか?

4963ソーダ:2018/10/02(火) 19:57:10 ID:ABjuafAU
あとネギが上からしか飛んで来ませんでした。

4964名無しさん:2018/10/03(水) 01:55:48 ID:bp5PiC0g
>>4963
申し訳ないですがお答えする事はできないです
以前からそうですが 短時間で質問をする人に対して
もう少し考えて欲しいため 回答を控えるようにしています

その他にも後々質問した部分でのバグが起こったとき
回答者が載せたコードを全く理解できない為に
バグが直せなくなるなどが無いようにするためでもあります

申し訳ないですがもう少し対処を考えたり
過去の回答から似たようなのを探してみたりしてみてください

4965名無しさん:2018/10/03(水) 09:42:37 ID:FFr7F9tk
私も敢えて少々丁寧さにかけるように書きましたが、これで伝わらないようでしたらもう少し基礎知識を身に着けた方がいいと思います。

この弾幕の出し方は耐久でいうと基本中の基本となります。これが理解できないとこの先の弾幕全て躓くような気がします。

私は下から出す弾幕のやり方も記述しましたが
どういう風に記述してどういう結果になったのでしょうか?

ネギが大量に生成された理由はどのようにお考えでしょうか?

4966ソーダ:2018/10/03(水) 20:23:53 ID:n.BLBiDs
ごめんなさい普通に自己解決できました。すいませんでした。

4967名無しさん:2018/10/06(土) 00:38:19 ID:0sCV4V3s
ゲーム中にウインドウを開いてファイルを読み込むなどということは出来ますか?使用はgame maker 8.0です。それが使われているのを見たのはgame maker 8.1だったのですが

4968名無しさん:2018/10/06(土) 12:37:43 ID:hO44hTdk
ファイルと言っても色々ありますがどういう事がしたいのか具体的に書いた方が返信きやすいと思います。
指定した画像を読み込んで画面の好きなところに配置できるアイワナは見たことありますが

4969名無しさん:2018/10/06(土) 13:51:12 ID:0sCV4V3s
>>4968正直言えば普通のゲームではなく配置練習用の簡単制作ツールを作りたくて、作ったマップを保存したり読み込んだりしたいのです

4970名無しさん:2018/10/06(土) 15:14:26 ID:0sCV4V3s
すいません、ほぼ解決しました。参考のために書いておきます

ロード
map = get_open_filename("*.map","");
if(map != ""){
game_load(map);
}

セーブ
map = get_save_filename("*.map","");
if(map!=""){
game_save(map);
}

こんな感じです

4971名無しさん:2018/10/06(土) 15:24:48 ID:hO44hTdk
>>4969
すでにそのアイワナはありますが、それじゃだめですか?

4972名無しさん:2018/10/06(土) 15:48:51 ID:0sCV4V3s
自分の使うためだけに使いやすいように作ってみようとしただけです

4973名無しさん:2018/11/05(月) 17:31:57 ID:JWqwh74I
質問です。
I wanna be the Sugar の Stage2 の 影のようなギミックの作り方を教えてください。
どうしたらいいのか見当もつきません...

4974名無しさん:2018/11/05(月) 19:07:38 ID:bp5PiC0g
>>4973
半透明可能(surface使用)
youtu.be/sHGrjxcfcZ4

liteで使用可能
youtu.be/d-C_JVu89SM

youtubeで検索をかけたところ
いくつか見つかったので作り方に関しては上の動画を見てください

仕組みとしては(どちらの動画も)
1.ブロックの各頂点から任意の座標の角度を調べる
2.各頂点から1で求めた角度を元に適当に離した位置に点を置く
ㅤ(動画では1000と定義されていますが大きい画面で使う場合は値を大きく)

3.点を結んで三角形を作って描画


こうなっています

上の動画は1つのブロックの大きさを16としています
任意の大きさに対応させる場合は
bbox_leftなどを使うと上手くいきます

4975名無しさん:2018/11/05(月) 21:15:38 ID:JWqwh74I
何とかできそうです!
ありがとうございます!

4976名無しさん:2018/11/06(火) 18:16:58 ID:gmdwDLzg
今、オブジェクトの一定の周囲にdoで重ならないように生成した特定のオブジェクトがあるか探し、個数を返してimage_indexを変えようとしています。
stepイベントで周囲のブロックの中心座標にplace_meetingでオブジェクトが存在するかを確かめ、trueだったらブロックに対応した変数を1にし、
すべての動作を終えた時のすべての変数を合計し代入してやってみようとしましたが、狙い通りの画像になりません。
一連の流れの中に原因につながりそうなところがあれば教えていただきたいです。

4977名無しさん:2018/11/06(火) 20:27:17 ID:gmdwDLzg
先ほどの状態よりかは良くなったのですが、検索するオブジェクトが横に二つ並んでいるとき、
片方のオブジェクトがおかしな挙動を見せます。

(例)
  〇〇
  21

〇は検索されるオブジェクト、数字は検索するオブジェクトです。
これの原因を特定できますでしょうか。

4978名無しさん:2018/11/06(火) 21:12:09 ID:gmdwDLzg
すみません、自己解決いたしました。

4979名無しさん:2018/11/08(木) 19:13:38 ID:gmdwDLzg
たびたびすみません。かなり進捗したのですが、詰めきれませんでした。
オブジェクトの周囲に特定のオブジェクトがない場合、その周囲の自身と同様のオブジェクトを消し、
その周囲のオブジェクトの周囲も検索して同じ動作をさせる、というのをwhile文を使いやってみようとしました。
しかし、無限ループになってしまうのか動作を停止してしまいます。

while(collision_rectangle(ax - 32,ay - 32,ax + 63,ay + 63,mineblock,false,false) = noone){
hidaa = collision_rectangle(ax - 32,ay - 32,ax - 1,ay - 1,mineblock,false,false)
hidab = collision_rectangle(ax - 32,ay,ax - 1,ay + 32,mineblock,false,false)
hidac = collision_rectangle(ax - 32,ay + 32,ax - 1,ay + 63,mineblock,false,false)
hidad = collision_rectangle(ax,ay - 32,ax + 31,ay - 1,mineblock,false,false)
hidae = collision_rectangle(ax,ay + 32,ax + 31,ay + 63,mineblock,false,false)
hidaf = collision_rectangle(ax + 32,ay - 32,ax + 63,ay - 1,mineblock,false,false)
hidag = collision_rectangle(ax + 32,ay,ax + 63,ay + 31,mineblock,false,false)
hidah = collision_rectangle(ax + 32,ay + 32,ax + 63,ay + 63,mineblock,false,false)
if(collision_rectangle(ax - 32,ay - 32,ax + 63,ay + 63,mine,false,false) = noone){
if(place_meeting(ax - 32,ay - 32,mineblock) == true){
with(hidaa){
instance_destroy()
}}
if(place_meeting(ax - 32,ay,mineblock) == true){
with(hidab){
instance_destroy()
}}
if(place_meeting(ax - 32,ay + 32,mineblock) == true){
with(hidac){
instance_destroy()
}}
if(place_meeting(ax,ay - 32,mineblock) == true){
with(hidad){
instance_destroy()
}}
if(place_meeting(ax,ay + 32,mineblock) == true){
with(hidae){
instance_destroy()
}}
if(place_meeting(ax + 32,ay - 32,mineblock) == true){
with(hidaf){
instance_destroy()
}}
if(place_meeting(ax + 32,ay,mineblock) == true){
with(hidag){
instance_destroy()
}}
if(place_meeting(ax + 32,ay + 32,mineblock) == true){
with(hidah){
instance_destroy()
}}else{
}

ax -=32 ay -=32

}
}

マインスイーパーのように周りに爆弾がないとき、その周囲も消す、というのをイメージしています。
axはx、ayはyを代入しています。
どなたか原因を教えていただけないでしょうか。

4980名無しさん:2018/11/08(木) 19:26:02 ID:gmdwDLzg
ごめんなさい、原因というか、改善策ですね。

4981名無しさん:2018/11/08(木) 21:10:26 ID:4xeUTugQ
>>4979
走査する場合は一度調べた部分をチェック済みにしないと無限ループしてしまうので、何かフラグ立ててチェック済みにし、走査終わったところでフラグを戻すと良いのでは?

4982名無しさん:2018/11/08(木) 23:41:05 ID:gmdwDLzg
>>4981
フラグですか。axとayの位置に何か生成してそちらも確かめる、という方式は改善になるでしょうか。

4983名無しさん:2018/11/09(金) 09:47:23 ID:4xeUTugQ
>>4982
マインスイーパーで考えますが、8方向囲まれていますが調べるのは上下左右の4か所だけで良いのではと思います。その調べた先でさらにその上下左右を調べ…と再帰的に処理すると結果的に調べられるかなと。必要ならば8方向でいいですが。

走査するスクリプトをsousaとします。
sousaの中身を以下にします

/////
CHECKが0 かつ spriteが処理済みでない ならば

CHECK=1にし
上にあるブロックが爆弾でなければ 上のブロックがsousaを実行
右に
下に
左に


ブロックを処理済みのspriteに変える

/////

というのはどうでしょうか。

4984名無しさん:2018/11/10(土) 09:50:51 ID:bp5PiC0g
>>4982

個人的に気になったのは
collision_rectangleが連続している部分ですね
どうみても隙間なく敷き詰められているのにも関わらず
collision_rectangleで調べているのが気になります
instance_destroy()も使うべきではないです

board_masterというオブジェクトを作って
2次元配列でブロックのオブジェクトidを入れておきます
board_masterで全てのオブジェクトの走査を行います

ブロック側に_is_closedなどといった変数を付け加えます
_is_closedがtrueの時は既に見終わっているはずなので
そこはもう調べないなどとった事をすると上手くいきます

消さないといけないのだが……という場合は
_is_showという変数を付け加え
falseの時は何も描画しないようにすれば
見た目からは消えたと見えるはずです

4985名無しさん:2018/11/10(土) 19:56:21 ID:stVpU/go
隠しステージの製作をしています。
セーブに、触れている時にsキーを
押して(stage)に戻るコードを教えていただきたいです。

こういうふにかきました。
セーブのplayerとのcollisionイベントに、
if(keyboard_check(global.s_key)==true){
roomTo=s1p3
}

4986名無しさん:2018/11/10(土) 22:12:57 ID:4xeUTugQ
>>4985
global.s_key というのは「キーボードのsを押す」と設定してあるんですよね?

そう書いてやってみて結果どうなったのかと、どのエンジンを使っているかを書いてください

4987名無しさん:2018/11/11(日) 07:36:25 ID:stVpU/go
4985の者です。
セーブの前で、sを押しても、反応しませんでした。
ゆううつenjinです。
知識不足ですみません。

4988名無しさん:2018/11/11(日) 07:47:38 ID:bp5PiC0g
>>4987
それはglobal.s_keyの値が0になっていることが問題です
SetGlobalOptionにglobal.s_keyの定義を書くか
ord('S')に書き換えてください

4989名無しさん:2018/11/11(日) 07:51:17 ID:4xeUTugQ
>>4987
global.s_keyというのを設定していない気がするので、

if(keyboard_check(ord('S')))
にしてみてください

4990名無しさん:2018/11/11(日) 08:42:42 ID:stVpU/go
4985です。
教えていただいたものを、すべて
やってみましたが、できませんでした。
ここは、潔くあきらめさせていただきます。
すみません。いままで、ありがとうございました。

4991名無しさん:2018/11/11(日) 09:56:22 ID:bp5PiC0g
てかroomToってただの変数だから
room_goto(s1p3)にすりゃ解決するんじゃ

4992名無しさん:2018/11/11(日) 10:19:38 ID:bp5PiC0g
てかあきらめるって何?
実装が簡単にうまくいかないから すぐにあきらめるのか

悪いことは言わない
それなら制作をやめた方がいい

出来ないので実装するのあきらめました
なんてプレイヤーからしたらそんなん知らんからな
色んな所からクソ言われるぐらいなら作らないほうがマシだろ?

覚悟を持って制作に挑んでほしい
それが出来ないなら制作をやめた方がいい

4993名無しさん:2018/11/11(日) 13:05:45 ID:SF7gH9cc
諦めたことをバレないようにアイデアで誤魔化すんだよ

4994名無しさん:2018/11/11(日) 23:36:14 ID:4xeUTugQ
>>4990
単純なことを見落としていました。roomToはwarpオブジェクトに入れる変数で、実際のルーム移動はオブジェクトのparentフォルダにあるroomchangerが行っています。
roomchangerのプレイヤーとのコリジョンイベントにあるコードを参考に書き直してみてください。

4995名無しさん:2018/11/12(月) 16:11:01 ID:stVpU/go
ありがとうございます<(--)>

4996名無しさん:2018/12/08(土) 18:36:04 ID:ish/O3i.
よくアイワナwikiとか見ていて、その時にflagというのがよく出てくるんですけど、どういうことなんでしょうか? 制作初心者なので全くわからず..

4997名無しさん:2018/12/08(土) 23:07:34 ID:bp5PiC0g
>>4996
恐らくそれは変数ではないかと思います
なのでflagじゃなくてfooやhogeに置き換えても問題ありません

変数が分からなければGML概要編の変数編を見てください

4998名無しさん:2018/12/09(日) 08:33:06 ID:ish/O3i.
ありがとうございます!

4999名無しさん:2018/12/09(日) 22:39:39 ID:JWqwh74I
既出でしたら申し訳ありません。

I wanna dreamy state of mind の Stage2 (白黒ステージ)の
viewを縦に2個に分けて緩やかな上下移動をさせるやり方を教えてください。

いろいろ試したのですがどうもうまくいかなくて...よろしくお願いいたします。

5000名無しさん:2018/12/10(月) 09:15:11 ID:GyGis2ng
>>4999
ルームに余分にスペース(画面揺れの余白)を作り、
画面を二分割するようビューを設定し、
それぞれ三角関数でゆるやかに上下するよう座標を設定

でどうでしょうか


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板