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