🕌
画面スクロール処理の方法(GameMakerStadio)
日本語の解説が本当にないので、調べることに時間を多く使ってしまいました。
そんな人が出ないように、ここに書いておきます。
基本的に、
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