关于游戏引擎(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的字
相关推荐
汇策研习社3 小时前
StdDev标准差指标深度解析:量化市场波动的核心工具
大数据·经验分享·金融·区块链·fastbull
郝学胜-神的一滴7 小时前
中级OpenGL教程 013:渲染器类架构设计与逐帧渲染流程详解
开发语言·c++·unity·游戏引擎·图形渲染·opengl·unreal
BomanZQT7 小时前
NSK PSS2020N1D1435 精密滚珠丝杠技术手册
经验分享·规格说明书
fofantasy8 小时前
NSK超重载高速静音滚珠丝杠技术解析
经验分享·规格说明书
德思特9 小时前
从靠天吃饭到科技种田,虹科&德思特与极飞科技聊聊农业无人机不迷路的 “硬核底气“
经验分享
vivo互联网技术10 小时前
当 AI 进入推荐系统:从“推什么”到“怎么选”
人工智能·游戏·产品
法雅特吉他10 小时前
吉他面板材质技术解析:合板 vs 面单 vs 全单
经验分享·新媒体运营·学习方法·材质·内容运营
浩瀚地学11 小时前
【Java基础复习】IO流(四)
java·开发语言·经验分享·笔记·学习
Rain的Java大神实战圈12 小时前
高并发下如何防止商品超卖少卖
经验分享·redis·高并发·架构设计·电商·面试经验
_helen_52012 小时前
unreal engine 虚拟现实 + airsim
游戏引擎·vr·虚幻