关于游戏引擎(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的字
相关推荐
又过二十8 小时前
结合Godot八向图实现网页角色设计器测试
ai·aigc·godot·game·qwen-image·游戏素材
成都蜀味缘餐饮技术培训学校10 小时前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
聪明的笨猪猪11 小时前
AI应用架构选型:架构师的核心决策困境与权衡
经验分享·面试·架构
寂寞的船13 小时前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互
我qq不是451516521 天前
WorkBuddy下载体验
人工智能·经验分享·ai·workbuddy
一个人旅程~1 天前
关于imac27inch因改短用户名导致混合硬盘和系统崩溃的问题分析与故障解决
经验分享·笔记·macos·新浪微博
java_logo1 天前
Docker 部署 EmulatorJS:轻松搭建浏览器复古游戏平台
游戏·docker·容器·复古游戏·轩辕镜像·emulatorjs·红白机
小杨爱科普1 天前
制造业上自动化改造,改造部分的专利到底归谁
运维·经验分享·自动化
淡海水1 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
康谋自动驾驶2 天前
康谋分享 |一文吃透激光雷达-相机联合标定:从几何原理到重卡实测闭环
经验分享·外参标定·l-c标定