呆呆敲代碼的小Y 2021-09-18 14:14:23 阅读数:134
前面簡單寫過兩篇文章介紹了怎樣 在Unity中
和 在代碼中切換
天空盒
切換天空盒還是非常簡單的
那這篇文章就寫了一個簡單的實例做一個稍微花哨一點的 天空盒
切換實例!
先來看一下實現的一個效果,以防沒能看明白我說的意思
因為在場景中想要實現一個可以隨時切換天空盒的效果,所以就想出來這麼一個簡單的辦法
通過在場景中顯示一些個帶有自身天空盒材質的小球,然後點擊他們就可以切換天空盒啦!
下面說一下制作步驟,很簡單的一學就會!
先來在場景搭建一個場景
放上一個平面和四個小圓球
然後找到我們的 天空盒材質球
和 天空盒的圖片
,直接拖到小球上即可!
這樣小球就有顏色了
這一步的代碼也很簡單,我們之前的文章中也講過如何通過代碼切換天空盒
所以這裏直接上代碼
public class skyDemo1 : MonoBehaviour,IPointerDownHandler
{
public Material skyMaterial;//天空盒材質
//點擊小球的回調
public void OnPointerDown(PointerEventData eventData)
{
//切換天空盒
RenderSettings.skybox = skyMaterial;
}
}
然後我們把該脚本掛在到每個小球身上,並把自己的天空盒材質
添加上去
如下所示:
這個時候我們點擊每個小球就可以切換天空盒啦!
這一步很簡單啦,在Unity中實現旋轉的方法有很多種,這裏就不多說了
這裏使用Unity自帶的API:transform.RotateAround(Vector3,Vector3,float);
完整代碼如下:
using UnityEngine;
using UnityEngine.EventSystems;
public class skyDemo1 : MonoBehaviour,IPointerDownHandler
{
public GameObject skyCenter;
public Material skyMaterial;//天空盒材質
public void OnPointerDown(PointerEventData eventData)
{
//切換天空盒
RenderSettings.skybox = skyMaterial;
}
void Update()
{
Revolution();
}
public void Revolution()
{
//繞著某個中心點 的某一個軸,按照一個速度一直旋轉
transform.RotateAround(skyCenter.transform.position, skyCenter.transform.up, Time.deltaTime * 50);
}
}
實現效果如下:
一個簡單的切換天空盒
的效果就實現啦~
是不是很簡單呢,如果你有更好的創意也可以給我提提建議哈
我也想多一些更好的創意!!!
如果沒有合適的天空盒資源
,可以下載我文章中顯示的這些個天空盒資源
版权声明:本文为[呆呆敲代碼的小Y]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210918141422934o.html