Menu
CoddyTech

動く足場

CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 49/56。

challenge icon

チャレンジ

中級

青い足場は隙間の上を前後に滑るように動きます。前のレッスンの内容はすべて残してください。

MovingPlatformを完成させましょう。

  • Inspectorで設定する2つのフィールド、distance(3)とspeed(1.5)、およびpublic Vector3 deltaを追加します。
  • 開始位置から+x方向にdistance単位、毎秒speed単位の速さで滑るように移動し、開始位置まで戻ります。これをずっと繰り返します。
  • 毎フレーム、deltaにはそのフレームに移動した距離を設定します。つまり、移動後の位置から移動前の位置を引いた値です。

CharacterControllerは、乗っているものに運ばれません。動く足場に乗っていてもその場にとどまり、足場が下を滑っていきます。transform.positionを動かしても機能しません。次のMoveは物理エンジンが最後に認識した位置から始まり、変更を元に戻してしまうからです。Playerが足場に乗って移動するようにしましょう。

  • OnControllerColliderHitを追加します。ヒットした面の法線が上向き(hit.normal.yが0.5より大きい、つまりプレイヤーがその上に立っている)で、オブジェクトがMovingPlatformを持っている場合、その足場をフィールドに保存します。
  • Updateで、その足場のdeltaをcontroller.Moveに渡すモーションに加え、その後で足場を忘れます(フィールドをnullに設定します)。プレイヤーが足場の上にいる間は、Moveの呼び出しによって足場が再び見つかります。

Playを押し、足場にジャンプして乗り、そのまま移動してからCheckを押してください。

自分で試してみよう

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    // この部分は後のレッスンで実装します。前後に滑らかに移動する足場です。
}

本格的なゲームを作るのすべてのレッスン