关于游戏引擎(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的字
相关推荐
DK1858383225211 小时前
【源码开源部署】电竞代练护航陪玩小程序:全游戏服务平台完整解决方案(附宝塔部署教程)
游戏·微信小程序·uni-app·开源·php
恒锐丰科技林技术员13 小时前
EG27524 双通道栅极驱动芯片:高速功率变换系统的驱动利器
经验分享·嵌入式硬件·硬件工程
上海广测检测科技有限公司13 小时前
智能手表TELEC认证详解:日本电波法框架下的技术基准适合证明要点
经验分享·智能手表
富唯智能机器人14 小时前
复合机器人3C电子行业应用场景|柔性产线自动化解决方案|富唯智能
经验分享
恒锐丰科技林技术员14 小时前
EG2003:200V 半桥 MOS/IGBT 栅极驱动芯片解析
经验分享·嵌入式硬件·硬件工程
这料鬼有毒15 小时前
二刷hot100-45.跳跃游戏Ⅱ
游戏
从零开始的嵌入式之旅15 小时前
day36
linux·c语言·经验分享·笔记·嵌入式硬件
miaowu35718 小时前
2026 通用具身智能全拆解:从 VLA 模型到仓储、工业协作、医疗机器人真实落地
经验分享
点心的游戏开发世界18 小时前
GDScript 入门笔记(十六):文件读写与数据持久化
开发语言·笔记·游戏引擎·godot
AAwangzong18 小时前
10万预算智能体选型技术拆解:SaaS、开源框架、RPA+Agent三条路线的架构对比
经验分享