视角环绕镜头
视角环绕镜头
变量
{
全局:
28: Initialized
29: Center
30: TargetCenter
31: P1
34: Radius
35: Speed
36: Alpha
37: Rotation
38: Stage
39: StageTimer
40: StageDuration
41: IntroTotalTime
42: IntroTimer
43: IntroActive}
规则("\"初始化点位与参数")
{
事件
{
持续 - 全局;
}
条件
{
全局.Initialized == 假;
}
动作
{
"// 点位1坐标(建议用摄像机图标在地图上点选)"
全局.P1 = 矢量(0, 20, 0);
"// 环绕半径(单位:米)"
全局.Radius = 30;
"// 旋转速度(度/秒)"
全局.Speed = 30;
"// 旋转方向:-1顺时针,1逆时针"
全局.Rotation = 1;
"// 每个点位停留时间(秒)"
全局.StageDuration = 8;
" // 开场运镜总时长(秒),默认24秒(3个点位 × 8秒)"
全局.IntroTotalTime = 24;
" // 运镜计时器,从0开始"
全局.IntroTimer = 0;
"// 运镜是否激活,初始为True"
全局.IntroActive = 真;
" // 初始化阶段与角度"
全局.Stage = 0;
全局.StageTimer = 0;
全局.Alpha = 0;
全局.Center = 全局.P1;
全局.TargetCenter = 全局.P1;
全局.Initialized = 真;
}}
规则("让角度循环")
{
事件
{
持续 - 全局;
}
条件
{
全局.Rotation != 0;
全局.Alpha == 0;
}
动作
{
" // 让角度以指定速率递增,实现持续环绕"
追踪全局变量频率(Alpha, 全局.Rotation * 10000, 全局.Speed, 速率及最终值);
}}
规则("角度过大时重置")
{
事件
{
持续 - 全局;
}
条件
{
绝对值(全局.Alpha) == 10000;
}
动作
{
" // 角度归零,重新开始环绕"
全局.Alpha = 0;
}}
规则("阶段计时")
{
事件
{
持续 - 全局;
}
条件
{
全局.Initialized == 真;
}
动作
{
"// 计时器持续递增"
追踪全局变量频率(StageTimer, 9999, 1, 速率及最终值);
}}
规则("切换阶段")
{
事件
{
持续 - 全局;
}
条件
{
全局.StageTimer >= 全局.StageDuration;
}
动作
{
" // 阶段加1,满3归零"
全局.Stage = (全局.Stage + 1) % 3;
"// 计时器归零"
全局.StageTimer = 0;
}}
规则("切换到点位1")
{
事件
{
持续 - 全局;
}
条件
{
全局.Stage == 0;
}
动作
{
全局.TargetCenter = 全局.P1;
}}
规则("平滑移动中心点")
{
事件
{
持续 - 全局;
}
动作
{
" // 中心点以指定速率追逐目标点位,实现平滑过渡"
追踪全局变量频率(Center, 全局.TargetCenter, 5, 速率及最终值);
}}
规则("开场运镜计时")
{
事件
{
持续 - 全局;
}
条件
{
全局.IntroActive == 真;
}
动作
{
"// 运镜计时器持续递增"
追踪全局变量频率(IntroTimer, 9999, 1, 速率及最终值);
}}
规则("为所有玩家开启镜头")
{
事件
{
持续 - 每名玩家;
双方;
全部;
}
条件
{
全局.IntroActive == 真;
}
动作
{
"// 为事件玩家启动摄像机,位置由三角函数实时计算"
禁用 开始镜头(事件玩家, 矢量(X方向分量(全局.Center) + 全局.Radius * 角度的余弦值(全局.Alpha), Y方向分量(全局.Center), Z方向分量(全局.Center) + 全局.Radius * 角度的正弦值(全局.Alpha)),
全局.Center, 0);
禁用 开始镜头(事件玩家, 矢量(X方向分量(全局.Center) + 全局.Radius * 角度的余弦值(全局.Alpha), Y方向分量(全局.Center), Z方向分量(全局.Center) + 全局.Radius * 角度的正弦值(全局.Alpha)),
矢量(X方向分量(全局.Center) + 全局.Radius * 0.500 * 角度的余弦值(全局.Alpha + 90), Y方向分量(全局.Center), Z方向分量(全局.Center)
+ 全局.Radius * 0.500 * 角度的正弦值(全局.Alpha + 90)), 0);
开始镜头(事件玩家, 矢量(X方向分量(全局.Center) + 全局.Radius * 角度的余弦值(全局.Alpha), Y方向分量(全局.Center) + 40, Z方向分量(全局.Center) + 全局.Radius * 角度的正弦值(
全局.Alpha)), 全局.Center, 0);
}}
规则("为所有玩家停止镜头")
{
事件
{
持续 - 每名玩家;
双方;
全部;
}
条件
{
全局.IntroActive == 真;
游戏正在进行中 == 真;
}
动作
{
停止镜头(事件玩家);
}}
评论
这里空空如也~