はじめに:なぜこの2つの使い分けが重要なのか?
Godot Engineで開発を始めると、誰もが最初に_processと_physics_processという2つの関数に出会います。しかし、「キャラクターがPCの性能によって速く動いてしまう」「動きがカクカクして見える」「壁をすり抜けることがある」といった問題に直面したことはないでしょうか?
これらの問題のほとんどは、_processと_physics_processの役割を正しく理解せず、不適切な場所で処理を記述していることが原因です。この記事では、Godotのゲームループの心臓部であるこの2つの関数の違いを徹底的に解説します。
この記事でわかること
_process(可変)と_physics_process(固定)の 呼ばれ方の違い- 「PCの性能でゲーム速度が変わる」を防ぐ deltaの正しい使い方
- 入力・物理・見た目を分離した キャラクター移動の実装パターン
- カクつき(ジッター)を消す 物理補間 の設定
Sponsored
目次
_process vs _physics_process: 基本的な違い
2つの関数の最も重要な違いは、 「いつ」「どれくらいの頻度で」呼び出されるか にあります。これは、ゲーム開発における「可変タイムステップ」と「固定タイムステップ」という概念に直結しています。
| 特徴 | _process(delta) | _physics_process(delta) |
|---|---|---|
| 呼び出しタイミング | 毎フレーム(描画ごと) | 一定時間ごと(物理計算ごと) |
| タイムステップ | 可変 (Variable Timestep) | 固定 (Fixed Timestep) |
| 呼び出し頻度 | PC性能や負荷に依存(例: 60FPS, 144FPS) | プロジェクト設定に依存(デフォルト: 60回/秒) |
delta引数 | 前フレームからの経過時間(変動する) | 物理ステップ間の時間(固定値) |
| 主な用途 | UI更新、入力取得、視覚効果、非物理アニメーション | 物理演算、衝突判定、時間経過に厳密なロジック |
