关于游戏引擎(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的字
相关推荐
心前阳光4 小时前
Unity发布PC软件图标不能改变
unity·游戏引擎
笨鸟先飞的橘猫6 小时前
系统设计第十七天决策卡
学习·游戏
一孤程8 小时前
游戏测试专题第二篇:游戏功能测试与用例设计实战
功能测试·游戏·测试·测试覆盖率
sweetone9 小时前
索尼MHC-V7700组合音响一修一改
经验分享·嵌入式硬件·音视频
上海心泾国际物流有限公司9 小时前
我在几个医疗器械仓库记下的一组温湿度数据
经验分享·笔记·学习·健康医疗·交通物流
科技泡泡堂9 小时前
想玩《黎明行者之血》?2026年这4款适合玩3A的游戏本值得一看
游戏
恒锐丰科技林技术员10 小时前
EG1192S:高耐压零功耗使能降压 DC‑DC 芯片,拓宽工业电源设计边界
经验分享·嵌入式硬件·硬件工程
an869500111 小时前
unity如何在visual studio中打断点debug
unity·游戏引擎·visual studio
梦想平凡11 小时前
百游棋牌源代码开发搭建教程(二):PostgreSQL安装、业务表创建与版本化迁移
数据库·游戏·postgresql
FLJwu12 小时前
运动相机 ID 外观与壳体开模实战 01:ID 造型、拔模角度、壁厚设计 OEM 量产避坑|20 年源头工厂量产经验
经验分享·数码相机·相机