Unity 知识点 - 2D游戏 - 透明屋顶
Posted L建豪 忄YH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 知识点 - 2D游戏 - 透明屋顶相关的知识,希望对你有一定的参考价值。
Unity 知识点 - 2D游戏 - 透明屋顶
开发套件基于《创作者套件:RPG》
1.需求背景
- 在2D游戏场景中,角色走入房间后需要查看房间内的情况。有些大房间是直接加载另一个场景,而有些小房间直接改变房顶透明度,查看屋内情况。
2.具体方法
- 为房屋添加碰撞体组件,修改为触发器使用。结合角色的碰撞器,每次触发和离开都会调用特定函数。
- 代码放在屋顶对象或角色对象都可以,我倾向与放在屋顶对象中。
3.主要代码
- 在API手册中搜索《OnTrigger》可查看相关函数信息。
- 注意修改透明度的代码。
// 注意有个形参,每次角色产生碰撞都会调用这个函数
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Player") // 判断碰撞的物品的标签是否符合
{
// 这个修改透明度的函数,是乘于0.5,并不是直接赋值0~255
transform.GetComponent<SpriteRenderer>().material.color = new Color(1, 1, 1, (float)0.5);
Debug.Log("隐藏房顶"); // 打印,方便查看。
}
}
// 每次角色离开碰撞都会调用这个函数
private void OnTriggerExit2D(Collider2D collision)
{
if(collision.tag == "Player") // 判断碰撞的物品的标签是否符合
{
transform.GetComponent<SpriteRenderer>().material.color = new Color(1, 1, 1, 1);
Debug.Log("显示房顶"); // 打印,方便查看。
}
}
- 如果代码并非位于需要修改的对象上,则需要获取游戏对象,再获取组件,再修改透明度。参考API的使用,GameObject.GetComponent()。
public GameObject GameObject_0; // 获取游戏对象
SpriteRenderer him = GameObject_0.GetComponent<SpriteRenderer>(); // 获取组件
if (him != null) // 判断是否获取成功
{
him.material.color = new Color(1, 1, 1, (float)0.5); // 修改透明度
}
以上是关于Unity 知识点 - 2D游戏 - 透明屋顶的主要内容,如果未能解决你的问题,请参考以下文章
跟诸子学游戏 unity3d Rendering Mode和Render Mode