关于游戏引擎(godot)对齐音乐bpm的技术

引擎默认底层

  1. _process(): 每秒钟调用60次(无限的)

数学

  1. bpm=1分钟节拍数量=60s节拍数量

bpm120 = 60s120拍

  1. 每拍子时间= 60/bpm

  2. 每个拍子触发周期所需要的帧数= 每拍子时间*60(帧率)

这个是从帧数级别上对齐拍子的时间,对于游戏引擎来说,用帧数更加适合高频触发程序

在120bpm下,1拍是0.5s。

当然这个代码有极限的,不能超过或者小于那个1/60 的0.1666667 因为帧的最小单位是1,不是0.5.

我不知道这个算不算音帧程序

下面是伪代码

python 复制代码
var bpm = 120
var paizi_time = 60.0/120 #这样才有余数
var paizi = -1
var paizi_zhen = paizi_time * 60

func _process():
    if Engine.get_idle_frames()%int(paizi_zhen) == 0:
        paizi +=1
    # 4/4拍
    if paizi == 4:
        paizi = 0
    # 3/4拍
    if paizi == 3:
        paizi = 0
     set_text(str(paizi))#设置某个label的字
相关推荐
GJGCY1 小时前
金融AI Agent厂商怎么选?系统集成、API/RPA、权限审计与异常恢复能力评估
人工智能·经验分享·ai·金融·智能体
凯基迪科技3 小时前
Unity游戏加密锁逆向方案、选型与攻防分析
游戏·unity·游戏引擎
Solange__3 小时前
航天科普怎么用AI生成3D场景?从科学约束、尺度分层到网页展示的完整方案
图像处理·人工智能·游戏·3d·ai·自然语言处理·关卡设计
2601_967212725 小时前
轨道式插座安全结构、认证要求与场景参数技术说明
大数据·经验分享·安全
光视界6 小时前
什么是事件相机?仿生视觉技术如何实现百微秒级响应
经验分享·事件相机
从小白到软工7 小时前
5-2 从查表到控件:造按钮
c语言·开发语言·数据结构·经验分享·ai编程
恒锐丰科技林技术员7 小时前
EG2106L 高压半桥驱动芯片解析:高性价比 600V 栅极驱动方案
经验分享·嵌入式硬件·硬件工程
qingyunliushuiyu8 小时前
企业选数据BI AI服务商时,需关注哪些核心能力?
人工智能·经验分享
David猪大卫9 小时前
【C++修炼】STL容器—stack与queue
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
系统集成-鹰翔9 小时前
ERP接口月度统计少了零单月份:SQLite分组与最近三个月均值排查
javascript·数据库·经验分享·后端