Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 翻转Unity 3D/球体中的法线_Unity3d_Unityscript - Fatal编程技术网

Unity3d 翻转Unity 3D/球体中的法线

Unity3d 翻转Unity 3D/球体中的法线,unity3d,unityscript,Unity3d,Unityscript,我已经为我的游戏编写了这段代码,我想要的是在unity中翻转纹理上的法线。我有一个模型和一个纹理,希望纹理在球体模型内部,而不是外部。我想通过在翻转纹理顶部的球体内的图像周围移动相机来创建360全景效果 现在,当我第一次按下播放按钮时,它工作得很好,但是当我停止播放并想再次播放时,我看不到棋盘和周围环境 似乎每两次我试着玩它都有效。我在这方面有点生疏,我不知道我的错误在哪里 使用UnityEngine; 使用系统集合; 公共类对象规范:单行为 { 公共游戏对象SferaPanoramica; 无

我已经为我的游戏编写了这段代码,我想要的是在unity中翻转纹理上的法线。我有一个模型和一个纹理,希望纹理在球体模型内部,而不是外部。我想通过在翻转纹理顶部的球体内的图像周围移动相机来创建360全景效果

现在,当我第一次按下播放按钮时,它工作得很好,但是当我停止播放并想再次播放时,我看不到棋盘和周围环境

似乎每两次我试着玩它都有效。我在这方面有点生疏,我不知道我的错误在哪里

使用UnityEngine;
使用系统集合;
公共类对象规范:单行为
{
公共游戏对象SferaPanoramica;
无效唤醒()
{
倒球面();
}
void InvertSphere()
{
Vector3[]法线=SferaPanoramica.GetComponent().sharedMesh.normals;
对于(int i=0;i
您正在编辑sharedMesh,这将导致更改持续存在。发生的情况是,当您第二次点击run时,您正在反转已经反转的网格,使其再次处于右侧

而不是

Vector3[]normals=SferaPanoramica.GetComponent().sharedMesh.normals;
试一试

Vector3[]normals=SferaPanoramica.GetComponent().mesh.normals;

有关更多信息,请参见

我知道您找到了脚本的修复程序

如果您对其他方法感兴趣,可以使用着色器翻转法线

翻转法线着色器

Shader "Flip Normals" {
    Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader {

        Tags { "RenderType" = "Opaque" }

        Cull Off

        CGPROGRAM

        #pragma surface surf Lambert vertex:vert
        sampler2D _MainTex;

        struct Input {
            float2 uv_MainTex;
            float4 color : COLOR;
        };

        void vert(inout appdata_full v) {
            v.normal.xyz = v.normal * -1;
        }

        void surf (Input IN, inout SurfaceOutput o) {
             fixed3 result = tex2D(_MainTex, IN.uv_MainTex);
             o.Albedo = result.rgb;
             o.Alpha = 1;
        }

        ENDCG

    }

      Fallback "Diffuse"
}

我只是胡乱猜测一下,但是如果你移动了InvertSphere(),会有什么变化吗;要开始()而不是唤醒(),这是一样的。。。没有什么能改变,非常感谢你!成功了!我现在很高兴:使用着色器进行DDoS更新更快。谢谢