unity 物体颜色从一端逐渐变到另一端

这篇博客介绍了如何在Unity中实现物体颜色从一端逐渐变化到另一端的效果,以模拟建筑工人施工进度。通过Shader和简单脚本控制,演示了变色过程,并批评了Unity Shader的复杂性。示例代码提供了实现此功能的基础思路。
摘要由CSDN通过智能技术生成

这个功能主要来自项目中模拟建筑工人每天施工进度情况,一个大构件工人不可能一天完成,这个构件工人完成多少要求该构件变色百分比就为多少

直接看效果:

变色的走向我们可以通过程序控制

就是和sh

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
您可以尝试使用Coroutine来实现这个效果。下面是一个简单的示例: 1. 创建一个空物体,命名为"DisplayManager",将以下脚本附加到该物体上: ```csharp using UnityEngine; using System.Collections; public class DisplayManager : MonoBehaviour { public GameObject objectToDisplay; public float displaySpeed = 0.1f; private MeshRenderer objectRenderer; void Start () { objectRenderer = objectToDisplay.GetComponent<MeshRenderer>(); StartCoroutine(DisplayObject()); } IEnumerator DisplayObject() { // 获取物体的边界框 Bounds bounds = objectRenderer.bounds; // 获取物体的起始位置 Vector3 startPosition = new Vector3(bounds.min.x, bounds.min.y, bounds.center.z); // 获取物体的结束位置 Vector3 endPosition = new Vector3(bounds.max.x, bounds.max.y, bounds.center.z); // 设置物体的起始位置 objectToDisplay.transform.position = startPosition; // 逐渐物体移动到结束位置 while (objectToDisplay.transform.position != endPosition) { objectToDisplay.transform.position = Vector3.MoveTowards(objectToDisplay.transform.position, endPosition, displaySpeed * Time.deltaTime); yield return null; } } } ``` 2. 创建一个游戏对象,将其命名为"DisplayObject",并添加一个MeshRenderer组件以及一个MeshFilter组件。 3. 将一个3D模型拖放到"DisplayObject"的MeshFilter组件上,以便可以看到物体。 4. 将"DisplayObject"拖放到"DisplayManager"的"objectToDisplay"字段中。 5. 在Unity编辑器中运行游戏,您将会看到物体从其边界框的一端移动到另一端,直到整个物体都显示出来。 请注意,这只是一个示例,您可以根据自己的需求和场景进行修改。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值