关于游戏引擎(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的字
相关推荐
passionSnail1 小时前
《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-俄罗斯方块:用旋转矩阵打造经典
算法·matlab·矩阵·游戏程序·交互
windwind20002 小时前
发行基础:本地化BUG导致审核失败
游戏·青少年编程·编辑器·bug·创业创新·玩游戏
FAREWELL000753 小时前
Unity基础学习(十)Camera组件
学习·unity·c#·游戏引擎
wgc2k5 小时前
Java游戏服务器开发流水账(4)游戏的数据持久化
java·服务器·游戏
chennalC#c.h.JA Ptho5 小时前
archlinux 详解系统层面
linux·经验分享·笔记·系统架构·系统安全
_Jyuan_9 小时前
镜头内常见的马达类型(私人笔记)
经验分享·笔记·数码相机
岂是尔等觊觎10 小时前
软件设计师教程——第一章 计算机系统知识(下)
经验分享·笔记·其他
LouSean11 小时前
Unity按钮事件冒泡
经验分享·笔记·学习·unity·游戏引擎
笨笨56113 小时前
SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(二)
经验分享
IP管家13 小时前
多级路由器如何避免IP冲突
网络·网络协议·tcp/ip·游戏·智能路由器·ip