我正在为“魔兽世界”创建一个附加组件。
我有这个:
if edirection == "moon" then sffem = 105*math.sin(math.pi - math.asin(cpower/105) + math.pi/20 * sfcasttime) end
这个工作正常,但我需要将截止点设置为100和-100。
这是因为我的角色的能量是基于一个正弦波,从0开始下降到-100,在那里停留几秒钟,然后回到0上升到100并停留几秒钟并返回到0. / p>
这是因为正弦波的能量为105,-105,但最大和最小的玩家能量为100。
我试过了:
if edirection == "moon" then sffem = (MAX(-100;MIN(100;105*math.sin(math.pi - math.asin(cpower/105) + math.pi/20 * sfcasttime)))) end
这只是一个错误。
我该怎么做?
答案 0 :(得分:3)
没有必要在一行中完成所有这些操作。例如,在行
之后dvUpcomingLeave.RowFilter = String.Format("DATEPART(Month, joiningDate) = #{0}#",now.Month);
做类似
的事情if edirection == "moon" then sffem = 105*math.sin(math.pi - math.asin(cpower/105) + math.pi/20 * sfcasttime) end
(感谢Henrik Ilgen的语法帮助)
答案 1 :(得分:0)
您的第二行代码是使用分号而不是逗号将参数分隔为MAX
和MIN
。
更改后的代码并使用math.min
和math.max
:
if edirection == "moon" then sffem = math.max(-100,math.min(100,105*math.sin(math.pi - math.asin(cpower/105) + math.pi/20 * sfcasttime))) end
您可能会发现制作钳位辅助函数很有用:
function clamp(value, min, max)
return math.max(min, math.min(max, value))
end
在这种情况下,您的代码变为:
if edirection == "moon" then sffem = clamp(105*math.sin(math.pi - math.asin(cpower/105) + math.pi/20 * sfcasttime), -100, 100) end