利用一个shader和一个控制摄像机得代码实现360全景观看

shader代码如下

Shader "Custom/insidevisible" {

	Properties{
		_MainTex("Base (RGB)", 2D) = "white" {}
	}

		SubShader{
			Tags { "RenderType" = "Opaque" }
			Cull front    // ADDED BY BERNIE, TO FLIP THE SURFACES
			LOD 100

			Pass {
				CGPROGRAM
					#pragma vertex vert
					#pragma fragment frag

					#include "UnityCG.cginc"

					struct appdata_t {
						float4 vertex : POSITION;
						float2 texcoord : TEXCOORD0;
					};

					struct v2f {
						float4 vertex : SV_POSITION;
						half2 texcoord : TEXCOORD0;
					};

					sampler2D _MainTex;
					float4 _MainTex_ST;

					v2f vert(appdata_t v)
					{
						v2f o;
						o.vertex = UnityObjectToClipPos(v.vertex);
						// ADDED BY BERNIE:
						v.texcoord.x = 1 - v.texcoord.x;
						o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
						return o;
					}

					fixed4 frag(v2f i) : SV_Target
					{
						fixed4 col = tex2D(_MainTex, i.texcoord);
						return col;
					}
				ENDCG
			}
	}
}

控制摄像机得代码

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

public class camcon : MonoBehaviour {
    private bool isrotate;
    float rotX = 0;
    float rotY = 0;
    // Use this for initialization
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            isrotate = true;
        }
        if (Input.GetMouseButtonUp(0))
        {
            isrotate = false;
        }
        if (isrotate)
        {
            float h = Input.GetAxis("Mouse X");
         
            rotX += h;
            transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, rotX, 0);

          
            float v = Input.GetAxis("Mouse Y");
            rotY += v;
            rotY = Mathf.Clamp(rotY, -30, 30);//限制摄像机上下旋转得角度
            transform.localEulerAngles = new Vector3(rotY, transform.localEulerAngles.y, 0);
        }
        
	}
}

接着需要创建一个sphere 球,和一个材质球,材质球得着色器使用上面写的shader,然后需要 让摄像机得位置和球得位置保持一致即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值