CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

皮影戏:三根棍撑起一台戏

2026-09-28 23:25 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【游戏功能】

皮影戏的一台戏只有一个人:两只手五根竹竿,幕布上演出千军万马。今天拆皮影戏的表现,看"剪影"这个最极致的简化怎么做出生动的演出。

一、亮幕、操偶、换幕三段演出

皮影戏的演出三段。亮幕段:灯亮,白幕透出暖光,幕后的影人从暗处浮现——影人是剪影,没有五官没有衣纹,全靠轮廓告诉观众"这是将军还是仙女"。操偶段:两根竹竿撑着影人的双臂,影人随竹竿摆动做同角度的姿势——将军按刀、仙女甩袖,姿势的切换靠竹竿角度的变化,竹竿一转影人就"活"了。换幕段:一幕演完灯暗半秒再亮,两个影人换姿势重新登场——换幕是皮影戏的分镜,每一幕一个定格姿势,连起来就是一出戏。三段的要点:剪影的生动不在细节在动态——轮廓动起来,剪影就活了。

完整演示在这,点换一幕:

demo
fx-shadowplay

二、幂尔框架实现:姿势切换与竹竿联动

影人的四肢角度按幕切换,竹竿随臂转动:

lua
local ShadowPlay = {}
local POSES = { "将军巡营", "仙女散花", "武生亮掌", "老生捋须" }
local ARM_A = { 0.9, 2.6, 0.4, 1.6 }

local act = 1

function SP.NextAct()
    act = act % #POSES + 1
    SL:SetValue("act", act)
    SL:PlaySfx("scene_change")
    -- 幕布暗亮切换: 换幕的翻页感
    SL:FlashScreen("#000000", 0.4)
    SL:ScheduleOnce(function()
        SL:ShowSystemTips("第 " .. act .. " 幕 · " .. POSES[act])
    end, 0.4)
end

function SP.Render(dt)
    local sway = math.sin(SL:GetValue("engineTime") * 2) * 0.04
    SL:SetActorRotate("puppet_a", sway)
    SL:SetActorRotate("puppet_b", -sway)
    -- 双臂角度按当前幕切换
    local a = ARM_A[act]
    SL:SetActorArm("puppet_a", "left", -math.cos(a) * 26, math.sin(a) * 26)
    SL:SetActorArm("puppet_a", "right", math.cos(a + 0.8) * 26, math.sin(a + 0.8) * 26)
    -- 影人的须发道具按角色换装
    if act == 1 then SL:ShowFx("general_hat")
    elseif act == 2 then SL:ShowFx("fairy_ribbon") end
end

return SP

双影人对演是皮影戏的经典构图:一将一帅隔幕对峙,两个剪影的姿势对话就是全部剧情。

三、剪影的光与道具的减法

剪影的光从幕后来:灯在幕布正后方,影人是纯黑剪影,幕布透出暖黄的底光——光晕的中心亮四周暗,影人站在光晕里最醒目。影人的细节做减法:头部圆、躯干五边、四肢五段竹竿——细节多一分剪影就糊一分,皮影艺人的行话是"影人要看透"。道具按角色做加法:将军的帽、仙女的飘带、武生的头冠,头上多的一笔就是角色的全部身份。双竹竿的露出是皮影戏的诚实:竿子就是要在幕布上露出来的,藏起来反而假——观众看皮影戏看的就是"人怎么操纵影子",竿子是戏的一部分。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

围三阙一:围三面赶一口,出口就是网口

【游戏功能】 围住一只怪的贪心人人都有:三面堵死一只不漏——可围三阙一的规矩偏偏唱反调:围三面留一口,怪只会往那口里钻——口…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

引水:先泼水,再借一道雷

【游戏功能】 元素搭配的老话是水火不容,可战场上的说法得倒过来念:水是雷的引信。引水的机制是一场两步的合谋:先泼一瓢水把地泼…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

血珠:踩碎血珠,断它口粮

【游戏功能】 低血大怪的回血机制人人见过,可血珠的回血藏着一手"要你去抢"的心机:它每掉两成血就吐一颗血珠在地上,两秒内不踩…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

现身:它钻进影子,从你背后出来

【游戏功能】 隐形怪人人都遇到过,可现身的机制比隐形狠:它钻进影子里消失,一秒后从你脚下画的影圈里钻出来,背刺三十四点——影…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

召唤阵:踩阵搅了它的援兵

【游戏功能】 有人纳闷:大怪危机预警里最气人的一档是什么?不是它放大招,是它开阵——法阵一转,转满三秒蹦出两只小狼,好好的单…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

蓄力炮:红线锁死就横挪

【游戏功能】 if chg <= 0.8 then lock = true ——一行把"锁定"写进蓄力里的判定,道破了蓄力炮…

2026-09-30 21:31 996 技术组