gpt4 book ai didi

c# - 使一个值的 50% 成为另一个变量的最大值(0%/100% 等于最小值)

转载 作者:行者123 更新时间:2023-11-30 19:54:20 25 4
gpt4 key购买 nike

我正在使用 Unity Engine 制作游戏,我希望太阳物体的亮度在达到一天中的特定时间之前增加,然后在该时间之后开始降低。

我将白天时间表示为白天时间的百分比值(0 到 1),如下所示:

float currentTime = 0.50f; //50% = noon, 0%/100% = midnight
float dayRange = 0.75f - 0.25f; //Daylight hours = 25% to 75% (6:00 to 18:00)
float dayPercent = (currentTime - 0.25f) / dayRange; //Current time between the daylight hours as a percentage.
float maxSunLight = 10f;
float currentSunLight = 5f;

我想要的:

dayPercent 介于 0 和 0.5 之间时,currentSunLight 将从 0 增加到 10。

dayPercent 介于 0.5 和 1 之间时,currentSunLight 将从 10 减少到 0。

我有一个困惑的方法来做这件事,但我确定这可能有一个简单的数学函数?

编辑:只是为了包括我的“凌乱”方式

if(dayPercent <= 0.50f){
currentSunLight = (dayPercent * 2) / maxSunLight * 100;
} else {
currentSunLight = (dayPercent / 2) / maxSunLight * 100;
}

最佳答案

我会建议这样的事情,坚持你目前的逻辑:

currentSunLight = 10 - Math.Abs(dayPercent - 0.5) * 20;

但这是一种线性方法,也就是说,你的太阳线性“升起”,然后突然再次线性落下,就好像它在三角形中移动一样。更好的计算方法是使用三角函数来实现更逼真的场景:

currentSunLight = Math.Cos( dayPercent * Math.PI ) * 10;

关于c# - 使一个值的 50% 成为另一个变量的最大值(0%/100% 等于最小值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42474832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com