关于游戏引擎(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的字
相关推荐
wgc2k2 小时前
Oops Framework-5-GUI资源的图集打包方式
游戏·cocos2d
衫水2 小时前
家庭投资组合方案(2026/6/7版)
经验分享
海兰3 小时前
【红楼梦:第二篇】梦境漫游,详细设计指南
人工智能·游戏
开开心心_Every5 小时前
解决打印机共享难题的实用工具
linux·b树·安全·游戏·随机森林·pdf·计算机外设
杨连江7 小时前
宏大叙事的情感感召机制及其对个体的影响研究
经验分享
卡梅德生物科技小能手7 小时前
LTA(淋巴毒素α):免疫调控的关键靶点与机制解析
人工智能·经验分享·机器学习
じ☆冷颜〃8 小时前
Picard-Lindelöf 定理的多视角证明、推广与加权范数方法
经验分享·笔记·线性代数·数学建模
じ☆冷颜〃9 小时前
Picard–Lindelöf定理在CS中的应用:理论框架与算法基础
人工智能·经验分享·笔记·算法·机器学习
LuminousCPP9 小时前
C 语言系列终章|编译与链接 + 预处理
c语言·经验分享·笔记·预处理·编译链接