没有合适的资源?快使用搜索试试~ 我知道了~
首页Unity3D实现描边框效果
资源详情
资源评论
资源推荐

Unity3D实现描边框效果实现描边框效果
主要为大家详细介绍了Unity3D实现描边框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣
的小伙伴们可以参考一下
Unity3d描边框效果网上有很多,大多是使用Shader来实现的
本文介绍使用Collider来实现这么一种效果
效果图如下
将物体添加Collider(Box Collider、Mesh Collider......)
每个Collider都有自己的边界Bound,描边效果就是将Bound显示出来
代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class ShowBoxCollider : MonoBehaviour
{
void OnRenderObject()
{
var colliders = gameObject.GetComponents<Collider>();
if (colliders == null)
{
return;
}
//创建并设置线条材质
CreateLineMaterial();
lineMaterial.SetPass(0);
GL.PushMatrix();
//这里无需将矩阵从本地坐标转化为世界左边
//GL.MultMatrix(transform.localToWorldMatrix);
for (int i = 0; i < colliders.Length; i++)
{
var col = colliders[i];
//获取本物体对象在世界范围内的中心点位置 col.center是本地坐标位置
var c = col.bounds.center;
//collider大小
var size = col.bounds.size;
float rx = size.x / 2f;
float ry = size.y / 2f;
float rz = size.z / 2f;
//获取collider边界的8个顶点位置
Vector3 p0, p1, p2, p3;
Vector3 p4, p5, p6, p7;
p0 = c + new Vector3(-rx, -ry, rz);
p1 = c + new Vector3(rx, -ry, rz);
p2 = c + new Vector3(rx, -ry, -rz);
p3 = c + new Vector3(-rx, -ry, -rz);
p4 = c + new Vector3(-rx, ry, rz);
p5 = c + new Vector3(rx, ry, rz);
p6 = c + new Vector3(rx, ry, -rz);
p7 = c + new Vector3(-rx, ry, -rz);
//画线
GL.Begin(GL.LINES);
GL.Color(Color.cyan);
GL.Vertex(p0);
GL.Vertex(p1);
GL.End();
GL.Begin(GL.LINES);


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1