Menu
CoddyTech

振り返り:番犬

CoddyのUnityジャーニー「物理演算とゲームプレイ」セクションの一部。レッスン 55/63。

challenge icon

チャレンジ

中級

番犬は犬小屋に見知らぬ人が近づかないようにします。Dogスクリプトを書きましょう。インスペクターで、player、kennel(犬小屋の前にある赤いマット)、speed(3.5)、guardRange(6)、bite(5)を設定します。PlayerスクリプトとHealthスクリプトは用意されています。矢印キーでプレイヤーを押し動かせます。また、プレイヤーのHealthにはTakeDamage(int amount)というpublicメソッドがあります。

  • プレイヤーが地面に沿って犬小屋からguardRangeより近い距離にいる間、犬はプレイヤーに向かって走ります。距離は犬からではなく、犬小屋から測ります。
  • それ以外の場合、犬は犬小屋に戻り、犬小屋から0.3以内に入ると立ち止まります。
  • 犬はRigidbodyの速度をspeedに設定して地面に沿って走り、y方向の速度は維持します。
  • 犬がプレイヤー(タグがPlayer)にぶつかると、プレイヤーのHealthに1ダメージを与え、犬から真っ直ぐ離れる方向へ、地面に沿ってbiteのインパルスをプレイヤーに加えます。

Playを押して犬小屋まで歩いて行き、それからCheckを押してください。

自分で試してみよう

using UnityEngine;

public class Dog : MonoBehaviour
{
    [SerializeField] private Transform player;
    [SerializeField] private Transform kennel;
    [SerializeField] private float speed = 3.5f;
    [SerializeField] private float guardRange = 6f;
    [SerializeField] private float bite = 5f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // 犬小屋を守る:近くにいるプレイヤーを追いかけるか、犬小屋に戻る
    }
}

物理演算とゲームプレイのすべてのレッスン