Unity でパルクール システムを実装する
動きを利用して物理的な障害を克服することに焦点を当てたトレーニング分野であるパルクールの概念は、ビデオ ゲームで非常に人気があり、プレイヤーにインタラクティブで魅力的な環境を提供します。 このシステムを実装すると、 Unity ゲームプレイ エクスペリエンスが向上します。 このチュートリアルでは、ウォール ランニングと跳馬に焦点を当てて、 で基本的なパルクール システムをセットアップするプロセスを説明します Unity。
必要な資産
- 基本的なキャラクター コントローラー:サードパーソン カメラのプレーヤー コントローラーを変更の基本クラスとして使用します。 Unity
- パルクール アニメーション: 壁走り、跳馬など。
1. シーンを設定する
- 環境に壁と障害物が適切にタグ付けされていることを確認し、 "Wall" 壁と "Obstacle" 保管可能な障害物に使用します。
2. 'SC_TPSController' 壁面ランニング用のスクリプトの変更
2.1. 壁の検出:
bool IsBesideWall(Vector3 direction)
{
RaycastHit hit;
if (Physics.Raycast(transform.position, direction, out hit, 1f))
{
if (hit.transform.CompareTag("Wall"))
{
return true;
}
}
return false;
}
2.2. ウォールランニング
- このコルーチンはウォールランニングを処理します。
public float wallRunTime = 2f; // Duration of the wall run.
IEnumerator WallRun(Vector3 direction)
{
float startTime = Time.time;
canMove = false; // Disable regular movement during wall run.
while (Time.time - startTime < wallRunTime)
{
characterController.Move(direction * speed * Time.deltaTime);
yield return null;
}
canMove = true; // Enable regular movement after wall run.
}
- 壁ランニングを次の 'Update()' 方法に統合します。
// Wall Run
if (IsBesideWall(transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
StartCoroutine(WallRun(transform.right));
}
else if (IsBesideWall(-transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
StartCoroutine(WallRun(-transform.right));
}
3. 'SC_TPSController' Vault 用に を変更する
3.1. 障害物の検出
- キャラクターの前に金庫室の障害物がないか確認してください。
bool IsObstacleInFront()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 1.5f))
{
if (hit.transform.CompareTag("Obstacle"))
{
return true;
}
}
return false;
}
3.2. ボールティング
- ボールトメソッドを追加します。
void Vault()
{
canMove = false; // Disable regular movement during vaulting.
// Translate the player over the obstacle.
Vector3 vaultMovement = (Vector3.up + transform.forward) * speed * Time.deltaTime;
characterController.Move(vaultMovement);
canMove = true; // Enable regular movement after vaulting.
}
- メソッドにヴォールティングを統合します 'Update()' 。
// Vaulting
if (IsObstacleInFront() && Input.GetButton("Jump") && canMove && characterController.isGrounded)
{
Vault();
}
結論
これらの修正により、既存のサードパーソン プレイヤー コントローラーにウォール ランニング 機能と跳躍機能が導入されます。 これらの新しい動作をさまざまなシナリオでテストし、意図したとおりに動作することを確認します。ゲームの特定の環境や目的のパルクールの仕組みに応じて、調整が必要になる場合があります。