2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityで視線誘導のための矢印をつくる①

Last updated at Posted at 2019-06-16

#はじめに

例えば、ゲームの作者がプレイヤーに対して
「左側にボタンあるよ! そっち向いて!!!」
と思っていたとします。

私は思いました。
なのでディスプレイに矢印を表示してプレイヤーの見る方向を誘導したいと思います。
※HTC VIVEを使って開発してます。

#完成イメージ
矢印が赤い玉の場所を知らせています。
20190616_DescriptionArrow1.gif

#前準備
矢印の3Dモデルを用意します。
arrow.JPG

#スクリプト
矢印に赤い玉の方向を向いてもらうスクリプトです。
Transform.LookAt は、「あるオブジェクトの方向を向いてほしい!」という時に便利です。

矢印に下記スクリプトをアタッチして、Unityエディタから矢印の向き先となる赤い玉を指定します。
HTC VIVEの場合、矢印を [Camera Rig] 内の Camera の子階層に配置して位置を調整します。

using UnityEngine;

public class MyLookAtTarget : MonoBehaviour {

    [SerializeField] private Transform target;

    void Update () 
    {
            this.gameObject.transform.LookAt(target);
    }
}

#シェーダー
カメラを動かしたとき、矢印の位置が床の奥にいったり、その他のオブジェクトの奥にいったとしても、矢印は常にカメラに表示されていてほしいです。

以下がそれを実現するシェーダーです。
シェーダー勉強中のため詳しくは語れません。コピペしたら使えるはずです。

(シェーダーで頑張らなくても、もう一台カメラを置いて、Culling Mask をいじってあげると同じようなことができるはずです。)

Shader "Costom/MyOverlayNoZTest" 
{
	Properties
	{
		_Color("Color", Color) = (1,1,1,1)
	}

	SubShader
	{
		Tags
		{
			"Queue" = "Overlay"
			"RenderType" = "Transparent"
		}

		Lighting Off
		ZTest Off

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

			struct appdata {
				float4 vertex   : POSITION;
				fixed4 color    : COLOR;
			};

			struct v2f {
				float4 vertex   : SV_POSITION;
				fixed4 color    : COLOR;
			};

			fixed4 _Color;

			v2f vert(appdata IN) {
				v2f OUT;
				OUT.vertex = UnityObjectToClipPos(IN.vertex);
				OUT.color = _Color;
				return OUT;
			}

			fixed4 frag(v2f IN) : SV_Target
			{
				return _Color;
			}
			ENDCG
		}
	}
}

#おわりに
次回:視線誘導のための矢印をつくる②
20190616_DescriptionArrow2.gif

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?