C# 计算阴影的大小
我创建了一个Unity3d项目,并在对象后面使用了一些聚光灯来获得它们的阴影。我试着用我的比例尺来得到地板上反射的阴影的真实大小。有办法吗 我相信你的问题大部分属于你,但我希望这里有一个方法能引导你走向正确的方向 我在这里的假设是:C# 计算阴影的大小,c#,unity3d,shadow,C#,Unity3d,Shadow,我创建了一个Unity3d项目,并在对象后面使用了一些聚光灯来获得它们的阴影。我试着用我的比例尺来得到地板上反射的阴影的真实大小。有办法吗 我相信你的问题大部分属于你,但我希望这里有一个方法能引导你走向正确的方向 我在这里的假设是: 当比例=1时,您知道对象高度 您的对象顶部不是太大(否则您必须将其宽度的一半包含在数学中) 对象轴放置在其底部(在人身上:在其脚下) 您的对象被放置在地板上(因此不在空中:否则计算起来有点复杂,但想法保持不变) 下面是一个快速的情况模式: 现在,您可以使用以下
- 当比例=1时,您知道对象高度
- 您的对象顶部不是太大(否则您必须将其宽度的一半包含在数学中)
- 对象轴放置在其底部(在人身上:在其脚下)
- 您的对象被放置在地板上(因此不在空中:否则计算起来有点复杂,但想法保持不变)
Vector3 topPoint = YOUR_OBJECT.transform.position + YOUR_OBJECT.transform.lossyScale.y * YOUR_OBJECT_HEIGHT;
Vector3 lightFlatPoint = new Vector3(YOUR_LIGHT.transform.position.x, topPoint.y, YOUR_LIGHT.transform.position.z);
float lightDeltaY = YOUR_LIGHT.transform.position.y - topPoint.y;
float lightFlatToTopPointDistance = Vector3.Distance(lightFlatPoint, topPoint);
float shadowSize = ((YOUR_OBJECT.transform.lossyScale.y * YOUR_OBJECT_HEIGHT) / lightDeltaY) * lightFlatToTopPointDistance;
希望这有帮助,我喜欢这些来自开发者的绘图:D+1谢谢!(这一次,我用的是形状,而不是手绘……我敢打赌,考虑到我的艺术天赋,你一定能猜出原因:P)