「無慈悲な追跡者」が生まれてしまった理由

最初にUnityで実装した追跡AIは、正直に言って恐ろしいものでした。敵の猫キャラクターが、1ミリの無駄もなく、常にプレイヤーの座標を目がけて最短距離で追いつめてくる。壁があろうがなかろうが、正確に軸を合わせて加速し、一度視界に入れば二度と逃がさない。 それは「可愛い猫との追いかけっこ」ではなく、高性能な殺人ドローンか、あるいは『ターミネーター』に追われているような感覚でした。プレイテスター(友人)からは「怖すぎて楽しむ余裕がない」という、作り手としては想定外の悲鳴が上がったのです。

「無慈悲な追跡者」が生まれてしまった理由

完璧すぎるAIは、ゲームとしての『遊び』を奪う

なぜ、正しいはずの最短距離アルゴリズムが、これほどまでに不評だったのか。AIと議論を重ねて気づいたのは、「予測できない隙」こそが楽しさを生むという事実でした。完璧なAIは、プレイヤーのどんな回避行動も即座に無効化してしまいます。そこには、プレイヤーが「あそこで巻けたかも!」と期待する余地が全くありませんでした。 私に必要だったのは、もっと賢いアルゴリズムではなく、もっと「人間(猫)らしい愚かさ」をコードで表現することだったのです。

あえて「隙」を作るための、0.1秒の設計

具体的に取り組んだのは、AIを「わざと下手に動かす」ための二つの制約です。 1. **反応のディレイ**: プレイヤーが動いた瞬間ではなく、コンマ数秒遅れて追いかけ始めるようにしました。これにより、プレイヤーは最初の一歩で「リード」している感覚を得られます。 2. **物理的な慣性の導入**: 即座に向きを変えるのではなく、曲がり角で少し膨らんで走るように調整しました。これにより、コーナー際でのギリギリの攻防という、新しいゲーム体験が生まれました。

不確実性を宿すための『Slerp』マジック

コード面では、`transform.LookAt` という一瞬で向きを変える呪文を封印しました。代わりに、指定した時間をかけて徐々にターゲットの方向へ回転させる `Quaternion.Slerp` を採用しました。この「徐々に」という部分が、キャラクターに質量と、迷いを感じさせる鍵になりました。

Source Code
// ターゲットに向かって徐々に向きを変えるロジック
// transform.LookAt(target) を封印し、物理的な回転をシミュレートする

void FixedUpdate() {
    if (isChasing) {
        // 1. プレイヤーへの方向ベクトルを計算
        Vector3 direction = (player.position - transform.position).normalized;
        
        // 2. 即座に向きを変えるのではなく、ゆっくりとターゲットの方向へ回転させる
        // rotationSpeed を調整することで、猫の「反応速度」をデザインできる
        Quaternion targetRotation = Quaternion.LookRotation(direction);
        transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotationSpeed);
        
        // 3. 今向いている正面方向に前進
        // 急カーブを曲がる際、回転が追いつかずに「膨らむ」挙動が自然と生まれる
        rb.MovePosition(transform.position + transform.forward * moveSpeed * Time.deltaTime);
    }
}

数字を変えるだけで、猫に性格がつく

回転速度を示す `rotationSpeed`。この数字一つで、猫の性格が変わります。数字を上げれば「俊敏で怖い猫」に、下げれば「少しおっちょこちょいで逃げ切りやすい猫」に。数字をいじるほどに、昨日の「ターミネーター」が、徐々に生き生きとした、意志を持った生き物に見えてきました。 意図的に作り出した「膨らみ」のおかげで、プレイヤーは曲がり角を利用してショートカットしたり、猫を振り切ったりするテクニックを磨けるようになったのです。

生命感は、非合理な隙間に宿る

この開発を通じて学んだのは、完璧なロジックを崩し、あえて不自然さや隙を組み込むことが、デジタルな存在に「意志」や「生命」を感じさせるための最短距離だということです。非効率的な動き、無駄な揺らぎ。そこにこそ、プレイヤーが共感し、楽しめる『人間味』が宿ります。 これからも、AIという高精度のエンジンを使いながら、その上にどれだけ魅力的な「愚かさ」をデザインできるか。それを追求する旅を楽しんでいこうと思います。