GameMaker 日本語掲示板

シーケンスの位置を移動させる方法

4 コメント
views
17 フォロー

シーケンスをカメラに追従させるため
シーケンスを作成後
以下のようなコードをステップイベントにて実行しています。

if sequence_exists(seq){
   layer_sequence_x(seq, oCamera.x);
   layer_sequence_x(seq, oCamera.y);
}

これではうまく動作せず、シーケンスは作成位置にとどまってしまいます。
なぜ動作しないのか、解決方法を教えて頂けると幸いです。

kodrum
作成: 2024/04/07 (日) 18:56:10
最終更新: 2024/04/07 (日) 18:58:52
通報 ...
1
生高橋 2024/04/15 (月) 18:32:48

どちらもlayer_sequence_xになってるのが原因でしょうか?

2

ご回答ありがとうございます!
すいません、記載ミスです。
layer_sequence_x(seq, oCamera.y);

layer_sequence_y(seq, oCamera.y);

3

シーケンスを使ったことがないので回答はできないのですが、このコードがどこに書かれているか知りたいところです。

あと、これを実行するとOutputにはなんと出力されますか?

if sequence_exists(seq) {
	show_debug_message($"camera.loc={oCamera.x}. {oCamera.y}");
	layer_sequence_x(seq, oCamera.x);
	layer_sequence_x(seq, oCamera.y);
}
else
{
	show_debug_message($"seqが存在しない");
}
4
生高橋 2024/04/17 (水) 12:43:32

原因をいくつか考えてみました。

⓵seq変数にシーケンスのインスタンスが入ってない。

これはあさまどさんのコードのやつでチェックするとseqが存在しないとなってしまいます。
どこかのタイミングで以下のようなコードを使ってシーケンスのインスタンスをseqに入れてやる必要があります。

seq = layer_sequence_create("Assets1",0,0,Sequence1);//引数は適当です

⓶seq変数の中身が削除、変更されている

どこかのコードでseq変数の中身を書き換えてしまっている場合は動きません。

⓷シーケンスを削除している。

移動より先に以下の削除のコードに到達している場合はインスタンスがないので動きません。

layer_sequence_destroy(seq);

⓸カメラのx,yが動いていない

カメラのx,yの値に変化がない場合は動作していないように見えるかもしれません。