unity学习笔记-3d字体穿透问题,小地图实现

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;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值