持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
pygame 混合颜色
您可能想对颜色做的另一件事是将一种颜色逐渐混合到另一种颜色中。假设我们在恐怖游戏中有一个僵尸,它通常是僵尸绿色的病态阴影,但最近从熔岩坑中出现,目前正在发出明亮的火球橙色阴影。随着时间的流逝,僵尸会冷却下来并恢复到通常的颜色。但是我们如何计算中间颜色以使过渡看起来平滑呢?
我们可以使用一种叫做线性插值的东西,这是一个奇特的移动术语。
从一个值到另一个值的直线。游戏程序员更喜欢使用首字母缩略词lerp,这真是太拗口了。若要在两个值之间进行检测,请找到第二个值和第一个值之间的差值,将其乘以 0 到 1 之间的因子,然后将其添加到第一个值中。因子 0 或 1 将产生第一个或第二个值,但因子 .5 给出的值介于第一个值和第二个值之间。任何其他因素都将导致两个端点之间产生比例值。让我们看看Python代码中的一个例子,以使其更清晰。清单 4-5 定义了一个函数 lerp,它采用两个值和一个因子,并返回一个混合值。
清单 4-5.简单的勒平示例
这将生成以下输出。尝试预测 lerp(100, 200,.75) 的结果会是什么。
要在颜色之间进行重复,您只需在每个组件之间进行重复即可产生新颜色。如果随时间变化该因子,则会导致平滑的颜色过渡。清单 4-6 包含函数 blend_color,它执行颜色勒差。
如果运行清单 4-6,您将在屏幕顶部看到一个滑块。最初,它将位于最左侧,表示因子 0(火球橙色)。如果单击并向屏幕右侧拖动,则可以平滑地将混合因子更改为 1(僵尸绿色)。生成的颜色显示在屏幕的下半部分。
您可以通过更改脚本顶部的 color1 和 color2 的值来尝试在其他颜色之间进行混合。尝试在完全对比的颜色和相似颜色的阴影之间混合。