Unityでスコープ機能を実装する

今回やること

画像のようにキーをおしたらズームするようになります
照準の画像も通常時とズーム時で変わるようにします
フォートナイトみたいなゲームでよく使われますね

目次

照準の作成

照準の画像が無い場合はこちらからダウンロードしてください

Create → UI → Imageをおします

作成したImageを選択し、座標を0,0,0にし、通常時の照準をSourceImageにドラッグ&ドロップします

続いて、同様にCreate → UI → Imageをおします

同様に作成したImageを選択し、座標を0,0,0にし、ズーム時の照準をSourceImageにドラッグ&ドロップします

ズームするようにプログラミングする

Scopeスクリプトの作成

Create → C#Scriptをおします

スクリプトの名前をScopeにし、ダブルクリックして編集画面を開きます

入力するスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Scope : MonoBehaviour
{
    private Camera cam;// ズームするカメラ
    public GameObject AimingA;// 通常の照準
    public GameObject AimingB;// ズームした時の照準

    // Start is called before the first frame update
    void Start()
    {
        cam = GetComponent<camera>();// Cameraの値を取得
        AimingA.SetActive(true);// 通常の照準を表示する
        AimingB.SetActive(false);// ズームした時の照準を非表示にする
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))// もし、スペースキーがおされたら、
        {
            cam.fieldOfView = 20;// カメラのFieldOfViewを20にする
            AimingA.SetActive(false);// 通常の照準を非表示にする
            AimingB.SetActive(true);// ズームした時の照準を表示する
        }

        if (Input.GetKeyUp(KeyCode.Space))// もし、スペースキーが離されたら、
        {
            cam.fieldOfView = 60;// カメラのFieldOfViewを60にする
            AimingA.SetActive(true);// 通常の照準を表示する
            AimingB.SetActive(false);// ズームした時の照準を非表示にする
        }
    }
}

入力したらMainCameraにScopeスクリプトをドラッグ&ドロップします

MainCameraを選択し、AimingAには通常時の照準、AimingBにはズーム時の照準をドラッグ&ドロップします

テストプレイをすると

スペースキーをおしたら、照準が切り替わってズームし、離すと元に戻ります

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次