3d字体穿透问题
思路
引入新字体,创建新的shader,修改shader代码,添加新材质球,给材质球贴上字体自带的texture,给3d字体更换材质球
新建shader
双击shader,进入代码,修改代码
Shader "Custom/3D Text Shader" {
Properties{
_MainTex("Font Texture", 2D) = "white" {}
_Color("Text Color", Color) = (1,1,1,1)
}
SubShader{
Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
Lighting Off Cull Off ZWrite On Fog{ Mode Off }
Blend SrcAlpha OneMinusSrcAlpha
Pass{
Color[_Color]
SetTexture[_MainTex]{
combine primary, texture * primary
}
}
}
}
给新建材质球,点击材质球的shader,替换成我们修改了代码的shader
在新的材质球上修改texture,选中字体自带的texture即可
右边为新建的shader,左边为新建的材质球
替换3d字体的材质球和字体即可完成
参考
https://www.cnblogs.com/vuciao/p/10603253.html
小地图实现
思路
新建一个摄像机,修改参数
主要是这两个,camera那个记得激活,这边是有需求需要切换才在一开始关掉的
哦,还要记得rotation的x修改成90°,这样就是俯视的角度了
然后再给你的人物头顶加个图标标记,当人物进行移动的时候,图标跟着移动,就实现了小地图的基本功能
代码
并没有
总结,今天还做了点小内容,不是什么新东西就不写上去了~
2021.7.13更新
小地图的代码实现
在观看了
https://www.bilibili.com/video/BV1sU4y1G7f2?t=943
的内容后基本看了一遍,然后敲了一遍
实现的原理是简单的数学问题
通过场景中地图和人之间的相对比例和相对位置,乘上小地图的比例就可以获得小地图里人物的对应坐标和位置了
Vector3 deltaPos = Vector3.zero;//场景中人物的相对位置
Vector2 tempPos = Vector2.zero;//在小地图里人物的相对坐标
float zoomX;//场景和人物的相对比例
float zoomY;//场景和人物的相对比例
RectTransform rect;//小地图的信息
public Transform player;//场景中的人物
private GameObject map;//场景中的地图
// Start is called before the first frame update
void Start()
{
map = GameObject.FindGameObjectWithTag("BG");//由于我的场景和人物是分开加载的,所以通过了查找标签的方式获得背景
//获得地图
rect = transform.parent.GetComponent<RectTransform>();
}
// Update is called once per frame
void Update()
{
//获得物体在地图上的相对位置
deltaPos = player.position - map.transform.position;
//获得相对比例
zoomX = deltaPos.x / map.GetComponent<MeshCollider>().bounds.size.x;
zoomY = deltaPos.z / map.GetComponent<MeshCollider>().bounds.size.z;
//转换数据
tempPos.x = zoomX * rect.sizeDelta.x;
tempPos.y = zoomY * rect.sizeDelta.y;
transform.localPosition = tempPos;
}