我创建了一个 Unity3d 项目,并在物体后面使用了一些聚光灯来获得它们的阴影。一旦反射到地板上,我试图获得阴影的真实大小(使用我的比例)。有没有办法做到这一点?
最佳答案
我相信您的问题主要属于 Mathematics Stack Exchange但我希望这里有一种方法可以引导您走向正确的方向。
我在这里做出的假设是:
- 当 scale = 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;
希望这对您有所帮助,
关于c# - 计算阴影的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43653184/