🕌

画面スクロール処理の方法(GameMakerStadio)

2025/02/19に公開

日本語の解説が本当にないので、調べることに時間を多く使ってしまいました。

そんな人が出ないように、ここに書いておきます。

基本的に、

camera_set_view_pos(view_camera[0],new_x,new_y);

で変更できます。

以下、実装例

	// プレイヤーのStepイベント
	var _xpos = player.x - view_wview[0]/2;
	var _ypos = player.y - view_hview[0]/2;
	
var _smooth = 0.05;

	// 画面端制限
	_xpos = clamp(_xpos, 0, room_width - view_wview[0]);
	_ypos = clamp(_ypos, 0, room_height - view_hview[0]);
// 滑らかな追従
var new_x = lerp(player.camera_x, _xpos, _smooth);
var new_y = lerp(player.camera_y, _ypos, _smooth);


if(sindou_time > 0){
camera_set_view_pos(view_camera[0],new_x + sin(time) * haba,new_y + sin(time) * haba);
}else{
// カメラ位置更
	camera_set_view_pos(view_camera[0],new_x,new_y);
	haba = 5;
}
	


time++;
sindou_time--;

画面揺れする場合と、しない場合を別処理に分けているのは、追加で画面を動かしても、次のフレームで帳消しになるためです。一応、滑らかに画面を揺らしたいので、そのような実装としました。
この処理の後に実行しないとそもそも、上書きされ、反映すらされません。
当たり前かもしれませんが、注意してください。

Discussion