LoginSignup
134
131

More than 5 years have passed since last update.

Unity4.6のチュートリアルをやってみる(翻訳完了)

Last updated at Posted at 2014-09-07

概要

Unite2014のワークショップが面白そうだ。しかも資料と動画が全て公開されているのでレッツ写経。
Nightmareという見下ろし型シューティングが出来るらしいよ。

チュートリアル中には下記の機能がでてきます。

  • Animator Controller (Mecanim)
  • GUI
  • Animator Override Controller
  • Nav Mesh
  • Particle

事前準備

Unity4.6 Betaをインストールしましょう。
- Unity - Beta - Unity 4.6

プロジェクトデータをアセットストアからダウンロード
- Asset Store - Nightmares - Unite Training Day 2014

Phase 1 環境のセットアップ 18分

Unity - Environment setup

slide1
- エディタのレイアウトを2 by 3
- プロジェクトタブをヒエラルキーの下に
- プロジェクトビューのスライダーを最小に
- File > New Scene
- File > Save Scene As Level 01としてScenesフォルダに保存

slide2
- EnvironmentプレハブをプロジェクトビューのPrefabsフォルダから探す
- シーンかヒエラルキーにドロップ
- Transformのpositionを0,0,0に
- 同じ手順をLightsプレハブにも繰り返す
- シーンを保存 (CMD-S / CTRL-S)

slide3
- Game Object > 3D Object > Quad
- Floorにリネーム (Return / F2)
- Positionを 0,0,0
- Rotationを 90,0,0
- Scaleを 100, 100, 1

slide4
- FloorオブジェクトからMesh Rendererコンポーネントをリムーブ
- Floorオブジェクトのインスペクタからレイヤーを Floorに変更
- シーンを保存

slide5
- GameObject > Create Empty
- BackgroundMusicにリネーム
- Add Component > Audio > Audio Source
- Audio Clip > Circle Select > Background Music
- loopにチェック、Volumeを0.1に
- シーンを保存

ssp1

Phase 2 プレイヤーキャラクター 57分

Unity - Player Character

slide 1
- Playerモデルを Models > Charactersフォルダから探す。
- シーンかヒエラルキーにドロップ
- Positionを 0,0,0 に。
- インスペクタからタグをPlayerに設定

slide 2
- Animationフォルダを選択しCreateをクリック。Animation Controllerを選択。
- PlayerACにリネーム
- ヒエラルキーの中のPlayerにドロップ
- Animationフォルダの中のPlayerACをダブルクリック
- Animatorウインドウをシーンビューに合体

slide 3
- Models > CharacterのPlayerモデルを展開(下向き三角を展開)
- Idle, Move, DeathアニメーションをAnimatorビューの空白のエリアにドラッグしてステートを作成
- Idleステートを右クリックしてデフォルトに設定
- boolパラメータを作成しIsWalkingとする
- Triggerパラメータを作成しDieとする

slide 4
- Idleステートを右クリック、MoveステートへMake Transition
- 作成したTransitionを選択
- ConditionをIsWalking = true に設定
- Moveステートを右クリックしIdleステートへMake Transition
- ConditionをIsWalking = false に設定
- Any Stateを右クリックしDeathステートへMake Transition

slide 5
- Conditionを Die(Trigger)
- Playerゲームオブジェクトを選択、Add Component > Physics > Rigidbody
- DragとAngular DragをInfinityに
- Constraintsを開き Y positionと X, Z Rotationをフリーズ

slide 6
- Playerゲームオブジェクトを選択。 Add Component > Physics > Capsule Collider
- Center を (0.2, 0.6, 0)
- Height を 1.2

slide 7
- Add Component > Audio > Audio Source
- Audio Clip > ◯アイコンをクリック、 Player Hurt
- Play On Awake を外す
- PlayerMovement スクリプトを Scripts > Player から探す
- ヒエラルキーのPlayerオブジェクトにドラッグ
- シーンを保存

slide 8
- PlayerMovementスクリプトをダブルクリックして開く

Slide9

  • 変数を追加
クラスへの変数追加
    public float speed = 6f;
    Vector3 movement;
    Animator anim;
    Rigidbody playerRigidbody;
    int floorMask;
    float camRayLength = 100f;   

slide 10

  • Awakeメソッドを追加
Awakeメソッドの内容
    void Awake ()
    {
        floorMask = LayerMask.GetMask ("Floor");

        anim = GetComponent <Animator> ();
        playerRigidbody = GetComponent <Rigidbody> ();
    }

slide 11

  • FixedUpdateメソッドを追加
FixedUpdateの内容
    void FixedUpdate ()
    {
        float h = Input.GetAxisRaw ("Horizontal");
        float v = Input.GetAxisRaw ("Vertical");
     }

slide 12

  • Moveメソッドを追加

二軸の移動量を平準化

Moveメソッドの内容
    void Move (float h, float v)
    {
        movement.Set (h, 0f, v);

        movement = movement.normalized * speed * Time.deltaTime;

        playerRigidbody.MovePosition (transform.position + movement);
    }

slide 13

  • Turningメソッドを追加

カメラからRayを飛ばしあたった場所を基準に。

Turningメソッドの内容
    void Turning ()
    {
        Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);

        RaycastHit floorHit;

        if(Physics.Raycast (camRay, out floorHit, camRayLength, floorMask))
        {
            Vector3 playerToMouse = floorHit.point - transform.position;

            playerToMouse.y = 0f;

            Quaternion newRotation = Quaternion.LookRotation (playerToMouse);

            playerRigidbody.MoveRotation (newRotation);
        }
    }

slide 14

  • Animatingメソッドを追加
Animatingの内容
    void Animating (float h, float v)
    {
        bool walking = h != 0f || v != 0f;

        anim.SetBool ("IsWalking", walking);
    }

slide 15

  • FixedUpdateから各メソッドをコール
FixedUpdateを更新
    void FixedUpdate ()
    {
        float h = Input.GetAxisRaw ("Horizontal");
        float v = Input.GetAxisRaw ("Vertical");

        Move (h, v);
        Turning ();
        Animating (h, v);
    }

slide 16

  • スクリプトを保存
  • Playボタンをクリックしてテスト
  • Stopで止める。ポーズはしないこと。

ssp2

Phase 3 カメラのセットアップ 15分

Unity - Camera setup

slide 1

  • ヒエラルキーのMain Cameraを選択
  • Transform Position を (1, 15, -22)
  • Transform Rotation を (30, 0, 0)
  • モードをProjectionをOrthographicへ変更
  • Size を 4.5

slide 2

  • 背景色をBlack
  • シーンを保存
  • プロジェクトパネルの Scripts フォルダの中の Camera フォルダを選択。
  • Create > C# Script
  • CameraFollow にリネーム

slide 3

  • CameraFollowスクリプトをヒエラルキーのMain Cameraにドロップ
  • シーンを保存
  • インスペクタのOpenをクリックしてスクリプトを開く

slide 4

  • StartとUpdateを削除
削除する箇所
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

slide 5

  • 何もなし

slide 6

  • 変数を追加
追加する変数
    public Transform target;
    public float smoothing = 5f;

slide 7

  • プライベート変数を追加
変数追加
    Vector3 offset;

slide 8

  • Startを追加
追加
    void Start ()
    {
        // Calculate the initial offset.
        offset = transform.position - target.position;
    }

slide 9

  • FixedUpdateを追加
追加
void FixedUpdate ()
    {
        Vector3 targetCamPos = target.position + offset;

        transform.position = Vector3.Lerp (transform.position, targetCamPos, smoothing * Time.deltaTime);
    }

slide 10

  • スクリプトを保存しUnityへ戻る
  • Main Cameraを選択し、PlayerオブジェクトをCameraFollowのTarget変数にアサイン
  • PlayerオブジェクトをPrefabsフォルダにドラッグしプレハブ化。保存してテストプレイ。

ssp3

Phase 4 敵その1 32分

Unity - Creating Enemy #1

slide 1

  • Zombunnyモデルを Models > Characters フォルダから探す
  • シーンへドロップ
  • HitParticlesをPrefabsフォルダから探し、ヒエラルキーのZombunnyにドロップ
  • レイヤーをShootableに変更

slide 2

  • Add Component > Physics > Rigidbody
  • Drag と Angular Drag を Infinity に
  • ConstraintsでFreeze Position Y と Freeze Rotation X と Zを設定
  • Add Component > Physics > Capsule Collider
  • Center Y を 0.8 、 Height を 1.5

slide 3

  • Add Component > Physics > Sphere Collider
  • Is Triggerをチェック
  • Center Y と Radius を両方 0.8 に。
  • Add Component > Audio > Audio Source
  • Zombunny Hurt audio clip を選択
  • Play On Awake をアンチェック

slide 4

  • Add Component > Navigation > Nav Mesh Agent
  • Radius を 0.3
  • Speed を 3
  • Stopping Distance を 1.3
  • Height を 1.1

slide 5

  • Window > Navigation を開く
  • Bake タブを選択
  • Radius を 0.75
  • Height を 1.2 、 Step Height を 0.1
  • Advanced エリアの Width Inaccuracy % を 1
  • BakeをクリックしてNav Meshを生成

ssp4

slide 6

  • Animationフォルダを開く
  • Create > Animator Controller
  • EnemyAC (for Animator Controller) にリネーム
  • ヒエラルキーのZombunnyにドロップ
  • EnemyAC をダブルクリックして開く

slide 7

  • Zombunny モデルを Models > Characters フォルダーから探し開く
  • 3つのアニメーションを探す - Idle, Move and Death set up
  • それぞれのクリップをAnimatorにドラッグ、Moveから置くと良い
  • Idle と Move を近くに、Death と Any Stateを近くに配置

slide 8

  • Moveステートがデフォルトか確認(オレンジ色にハイライト)
  • そうでない場合は右クリックしてデフォルトに設定
  • PlayerDead というTrigger Parameterを作成
  • Dead というTrigger Parameterを作成

ssp42

slide 9

  • Move ステートを右クリックし Idle ステートへCreate Transition
  • Any ステートを右クリックし Death ステートへCreate Transition
  • Condition の Move -> Idle を PlayerDeadに。
  • Condition の Any State -> Death を Deadに。

ssp44

slide 10

  • Scripts > Enemy フォルダから EnemyMovement を探し Zombunny へドロップ
  • シーンを保存
  • スクリプトを開く
  • プレイボタンを押してテスト

敵がNavMeshを使って追いかけてくるようになった。

PlayerのRigidbodyにIs Kinematicが入っていてすり抜けている。

ここまでで午前終了、ランチ休憩だったらしい。

Phase 5 ヘルスのHUD 21分

Unity - Health HUD

slide 1

  • シーンビューの 2d modeボタンをクリック
  • メニューから GameObject > UI > Canvas を選択
  • Canvas を HUDCanvas にリネーム
  • Add Component > Miscellaneous > Canvas Group
  • Interactable と Blocks Raycasts のチェックを外す

slide 2

  • HUDCanvas を右クリック、 Create Empty to add child
  • HealthUIにゲームオブジェクトをリネーム
  • Rect Transformのアンカープリセットを Alt+Shiftを押しながら左下合わせをクリック
  • Rect Transform の Width を 75 、 Height を 60

slide 3

  • HealthUIを右クリック、 > UI > Image to add child
  • Image を Heart にリネーム
  • Rect Transform の Position X と Y を 0
  • Width と Height を 30
  • Image component の Source Image に◯選択をクリックしアセットのHeart spriteを選択

slide 4

  • HealthUI を右クリック > UI > Slider
  • Slider を HealthSlider にリネーム
  • Rect Transform の Position X を 95, Y を 0
  • HealthSlider を展開し子を表示、 Handle Slide Area を選択して削除する。

slide 5

  • HealthSliderのSlider コンポーネントのTransition mode を None
  • Max Value を 100
  • actual Value を 100 (体力満タン)

slide 6

  • HUDCanvas を右クリック create a UI > Image
  • DamageImageにリネーム、Rect Transformのアンカーを両端のばしにセット。Alt押しながら右下のアイコンをクリック。
  • Image componentのColourをblock 、Alpha (A) を 0

Phase 6 プレイヤーヘルス 21分

Unity - Player Health

slide 1

  • Scripts > Player フォルダから PlayerHealth を探す
  • ヒエラルキーのPlayerにドロップ
  • PlayerHealth スクリプトを開いて確認
  • Unityに戻る

slide 2

  • PlayerHealth (Script) コンポーネントの HealthSlider にヒエラルキーから Health Slider をドロップしてアサイン
  • 同じようにDamageImageをDamage Imageにアサイン

slide 3

  • PlayerHealth (Script) コンポーネントにPlayer Death audio clip を Death Clip にアサイン。◯選択をクリック。
  • EnemyAttack を Scripts > Enemy フォルダから探し、ヒエラルキーの Zombunnyにアタッチ

slide 4

  • EnemyAtackスクリプトを開く
  • Unityに戻る
  • シーンを保存

死ねるようになった。

Phase 7 敵をやっつける 55分

Unity - Harming Enemies

slide 1

  • Scripts > Enemy フォルダから EnemyHealth を探す
  • ヒエラルキーのZombunny にドロップ
  • Enemy Health (Script) コンポーネントのZombunny death clip を Death Clip にアサイン
  • EnemyHealth スクリプトの内容を確認
  • Unityに戻る

slide 2

  • EnemyAttack スクリプトを開く
  • 13行目と22行目の // を消しコメントを外す
  • 49行目のコメントを外し、保存しUnityへ戻る
enemyHealthの行が増える
    Animator anim;
    GameObject player;
    PlayerHealth playerHealth;
    EnemyHealth enemyHealth;
    bool playerInRange;
    float timer;


    void Awake ()
    {
        player = GameObject.FindGameObjectWithTag ("Player");
        playerHealth = player.GetComponent <PlayerHealth> ();
        enemyHealth = GetComponent<EnemyHealth>();
        anim = GetComponent <Animator> ();
    }
enemyHealthの判定を増やす
    void Update ()
    {
        timer += Time.deltaTime;

        if(timer >= timeBetweenAttacks && playerInRange && enemyHealth.currentHealth > 0)
        {
            Attack ();
        }

        if(playerHealth.currentHealth <= 0)
        {
            anim.SetTrigger ("PlayerDead");
        }
    }

slide 3

  • Prefabs フォルダの GunParticles を選択
  • Particle System の右端の歯車のアイコンをクリック、Copy Component を選択
  • ヒエラルキーの Player を展開し GunBarrelEnd を選択
  • どれかの歯車をクリックし Paste Component as New を選択

slide 4

  • Particle System コンポーネントを折りたたんでおく
  • GunBarrelEnd を選択したまま Add Component > Effects > Line Renderer
  • Materials エリアを展開し◯アイコンをクリックし、LineRenderMaterial を選択

slide 5

  • Line Renderer のParametersを開き、Start Width と End Width を 0.05 に
  • Line Renderer コンポーネントのチェックを外し、無効にする

slide 6

  • Add Component > Rendering > Light
  • Color block / Picker から黄色い色を選択
  • Light コンポーネントのチェックを外し無効化
  • Add Component > Audio > Audio Source
  • Player Gunshot クリップを◯アイコンをクリックして選択
  • Play On Awakeのチェックを外す

slide 7

  • Scripts > Player フォルダの PlayerShooting を GunBarrelEnd にアサイン
  • PlayerShooting スクリプトを開く
  • Unityへ戻る
  • ヒエラルキーの Playerを選択し インスペクタ上部の Apply をクリックして更新をプレハブに反映

slide 8

  • シーンを保存
  • Playをしてテスト
  • 敵を倒すとエラー発生。 Scripts > Enemy フォルダの EnemyMovement を開く
  • // でコメントアウトされているところを全て解除し、保存
コメントを解除した後

public class EnemyMovement : MonoBehaviour
{
    Transform player;
    PlayerHealth playerHealth;
    EnemyHealth enemyHealth;
    NavMeshAgent nav;


    void Awake ()
    {
        player = GameObject.FindGameObjectWithTag ("Player").transform;
        playerHealth = player.GetComponent <PlayerHealth> ();
        enemyHealth = GetComponent <EnemyHealth> ();
        nav = GetComponent <NavMeshAgent> ();
    }


    void Update ()
    {
        if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
        {
            nav.SetDestination (player.position);
        }
        else
        {
            nav.enabled = false;
        }
    }
}

slide 9

  • Scripts > Player フォルダの中の PlayerHealth を開く
  • // を全て解除し保存
  • Unityへ戻る
  • テストプレイ

発砲して敵が倒せる。

Phase 8 得点をつける 20分

Unity - Scoring points

slide 1

  • ヒエラルキーの HUDCanvas を右クリック create UI > Text as a child game object
  • TextオブジェクトをScoreText にリネーム
  • アンカーを中央、上に設定
  • Position X を 0 に Position Y を -55

slide 2

  • Width を 300 、 Height を 50
  • Text コンポーネントのText を “Score: 0” に。
  • Font を丸アイコンをクリックして Luckiest Guy に
  • Font size を 50
  • Alignments を Center and Middle
  • Color を 白に

slide 3

  • Add Component > Shadow component (Shadowとタイプ) Effect Distance values を (2, -2) に。
  • Scripts > Managers フォルダから ScoreManager を探し、ScoreTextゲームオブジェクトにドロップ
  • スクリプトを開いて確認し、Unityへ戻る

slide 4

  • ヒエラルキーの Zombunny の EnemyHealth (script) を開く。
  • 77行目の // を外し StartSinking() を有効化
  • スクリプトを保存しUnityへ戻る

slide 5

  • テストプレイ
  • Zombunny ゲームオブジェクトを Prefabs フォルダにドラッグしプレハブ化する
  • ヒエラルキーから Zombunny オブジェクトを削除
  • シーンを保存

テストプレイの段階で敵を倒すと点数が入るように。

Phase 9 もっと敵を 34分

Unity - More Enemies

slide 1

  • Prefabs フォルダの中の Zombear を選択
  • Zobear の Animator コンポーネントを展開
  • Animation フォルダの EnemyAC Zombearの Animator Controllerプロパティにドロップ

slide 2

  • Prefabs フォルダの Hellephant を選択
  • Animation フォルダをクリックし、 Create > Animator Override Controller
  • HellephantAOC にリネーム
  • EnemyAC を Controllerにアサイン

slide 3

  • Models > Characters フォルダの Hellephant を展開しアニメーションクリップを表示
  • Idle, Move Death を HellephantAOC の対応する Override Tableにドラッグ
  • Prefabs の Hellephant を選択し HellephantAOC を Animator Controller にアサイン

slide 4

  • GameObject > Create Empty し EnemyManager にリネーム
  • Scripts > Managers フォルダから EnemyManager を探し、EnemyManagerオブジェクトにドロップ
  • EnemyManager 開いて確認し、戻る

slide 5

  • GameObject > Create Empty とし ZombunnySpawnPoint にリネーム
  • インスペクタの箱アイコンをクリックし ZombunnySpawnPoint に青を選択
  • Transform > Position を (-20.5, 0, 12.5)
  • Transform > Rotation を (0, 130, 0)

slide 6

  • GameObject > Create Empty とし ZombearSpawnPoint にリネーム
  • インスペクタのギズモをクリックし ZombearSpawnPoint をピンクに
  • Transform > Position を (22.5, 0, 15)
  • Transform > Rotation を (0, 240, 0)

slide 7

  • GameObject > Create Empty とし HellephantSpawnPoint にリネーム
  • インスペクタのギズモをクリックし HellephantSpawnPoint を黄色に
  • Transform > Position を (0, 0, 32)
  • Transform > Rotation を (0, 230, 0)

slide 8

  • ヒエラルキーの EnemyManager を選択し EnemyManager コンポーネントの PlayerHealth にPlayerをアサイン
  • Zombunny を Enemy プレハブからアサイン
  • Spawn Time が 3 seconds であることを確認

slide 9

  • ヒエラルキーのZombunnySpawnPoint を SpawnPoints array にドロップ
  • シーンを保存
  • テストプレイ

ウサギが画面左上の物陰から湧いてくるようになる。

slide 10

  • Scripts > Managers フォルダから EnemyManager を探し、EnemyManagerオブジェクトにあと2回ドロップする
  • EnemyManager オブジェクトが EnemyManager コンポーネントを3つ持っている事を確認

slide 11

  • Playerゲームオブジェクトを PlayerHealth にそれぞれアサイン
  • Prefabs フォルダから Zombear を 2番めのManagerのEnemy にアサイン。
  • Prefabs フォルダから Hellephant を 3番めのManagerのEnemy にアサイン。

slide 12

  • ヒエラルキーのZombearSpawnPoint 2番めのEnemyManagerのSpawnPointsにアサイン
  • ヒエラルキーのHellephantSpawnPoint 3番めのEnemyManagerのSpawnPointsにアサイン

slide 13

  • 3番目のEnemyManagerのSpawn Time を 10 (Hellphant用)
  • シーンを保存
  • テストプレイ

かなり賑やかに!

Phase 10 ゲームオーバー 36分

Unity - Game Over

slide 1

  • HUDCanvas を右クリックし、create a UI > Image
  • ScreenFader にリネーム
  • Rect Transform componentのアンカーを Altを押しながら Stretch both に設定
  • Image component,Color block を 薄い青に

slide 2

  • HUDCanvas を右クリック create a UI > Text
  • GameOverText にリネーム
  • Rect Transform component の アンカーを Altを押しながらクリックし Middle center に
  • Width を 300 、 Height を 50

slide 3

  • TextコンポーネントのTextを‘Game Over!’
  • Font を Luckiest Guy に
  • Font Size を 50 Alignment を Middle and Center
  • Color を白に。
  • Add Component > Shadow (Shadow とタイプ)

slide 4

  • HUDCanvas の子オブジェクトを並び替えて次の順番に。
  • HealthUI
  • DamageImage
  • ScreenFader
  • GameOverText
  • ScoreText

slide 5

  • ヒエラルキーのScreenFaderを選択
  • Colorのalpha を 0 に
  • ヒエラルキーのGameOverTextを選択
  • Colorのalpha を 0 に

slide 6

  • ヒエラルキーのHUDCanvas を選択
  • Window > Animation を開く
  • Add Curve ボタンをクリック
  • Create Animation ダイアログでAnimation フォルダを選択し、クリップをGameOverClipとする。 (Animator Controllerも同時に作成される。)

slide 7

  • Add Curve for GameOverText > Text > Color
  • Add Curve for GameOverText > RectTransform > Scale
  • Add Curve for ScreenFader > Image > Color
  • Add Curve for ScoreText > RectTransform > Scale
  • 全てのキーフレームを 0:30 へ。

slide 8

  • playheadを0:20へ移動し、GameOverText > RectTransform > Scale curve を選択し K を押して Add Keyframe する。
  • フレーム0に移動し、GameOverText > RectTransform > Scale を選択、値を 0 にインスペクタで設定

slide 9

  • playheadを0:20へ移動し、 GameOverText > RectTransform > Scale を 1.2 にインスペクタで設定。
  • playheadを0:30へ移動し
  • GameOverText > Text > Color > Alpha を 1
  • ScreenFader > Image > Color > Alpha を 1
  • ScoreText > RectTransfrom > Scale を 0.8

slide 10

  • 全てのキーフレームを選択し 1:30 (frame 90) から開始するように移動。
  • Record modeを終了。録画ボタンを押す。

slide 11

  • Animation フォルダの GameOverClip を選択し Loop time のチェックを外す
  • Animation フォルダの HUDCanvas animator controller を選択
  • ダブルクリックして開く。

slide 12

  • Animator ウインドウの空白を右クリックし Create State > Empty
  • Emptyにインスペクタからリネーム
  • Empty state を右クリックし Create Transition を GameOverClip へ。
  • Trigger parameter を作成し、GameOverとする。

slide 13

  • Empty ステートを右クリックし、Set As Default する。
  • Empty から GameOverClip へのトランジションを選択
  • Condition を GameOverに設定
  • ヒエラルキーのHUDCanvasを選択し、 Scripts > Managers フォルダの中の GameOverManager を HUDCanvas にアサイン

slide 14

  • Scripts > Managers フォルダの中の GameOverManager を確認する。
  • Unityエディタに戻る
  • ヒエラルキーのPlayerを Game Over Manager (Script) の Player Healthにドロップ

slide 15

  • シーンとプロジェクトを保存
  • Play
  • ゾンビトイを撃ちまくる!

Phase 11?

さらに調整する延長線

slide 1

  • ヒエラルキーの EnemyManager を選択
  • Zombunny と Zombear の Spawn Time values を 1
  • Hellephant Spawn Time value を 3
  • Prefabsの中のZombunny を選択。Nav Mesh Agent の Speed を 4
  • Zombear prefabも同様

slide 2

  • Prefabsの Hellephant を選択、 Nav Mesh Agent の Speed を 4
  • ヒエラルキーのPlayerを展開 GunBarrelEnd を選択
  • Player Shoot (Script) の Damage Per Shot を 15 、 Time Between Bullets を 0.05
134
131
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
134
131