C2音乐游戏的实验(原型)
在C2教程文件夹里面 找到: 气泡音乐(OSU模式).capx
如何实现音乐游戏,这里以音乐游戏OSU为例。
OSU的鼓点是提前产生的,并且产生后会有一个提示的红圈。
红圈的大小,代表距离 正确音符的时机,当红圈与音符重叠时是恰好的时机。
根据这个特性,开始制作一个游戏原型!
暂时不写一些操作的教程,就写一些核心的思路吧。
1.基础气泡的制作
【交互】制作 音符气泡sprite,功能为:点击气泡会破裂。使用touch object判断是否点击了气泡。
【计时器】再给该sprite添加变量time(=10),time会按照每0.01s减少0.1,也就是说音符会提前1秒出现。
【音符提示】为了让玩家察觉到音符的点击时机,再加一个红圈sprite,红圈的大小是和time相关的,time=0时,圈的大小=气泡的大小
【结果】点击气泡后,如果time在不同的时机段,气泡会给出不同的反馈。
time>3气泡不会被消灭,
time<3的时候值越小评价越高。(根据具体情况自行设置)
time<0则,错过音符的时机,显示miss
【点击顺序提示】提示玩家的点击顺序很重要,所以可以添加一个数字显示功能。
【绑定圈和数字】如何让气泡sprite,圈圈提示还有数字提示,这三个OBJ绑定在一起?
那当然是,使用变量了!把它们全部加入一个family,并添加family变量,名为id。
建立一个全局变量music_count来记录音符产生了多少个,同时产生音符时让id=
music_count,这样就可以让三个OBJ联系在一起,方便操作。
2.产生气泡的方法(核心)
【思考】如何根据音乐的时机来产生气泡?
【数据】先使用数组储存时间和气泡产生的位置
数组height=0 记录音符出现的时间
数组height=1\2 记录音符出现的x/y 位置
数组height=3 记录音符出现的数字
数组height=4 (记录音符类型,暂时只做气泡,所以没有记录)
【时间判定】系统audio插件可以获取当前tag 音乐的总长度,以及当前音乐的播放时间
这两个系统变量是最核心的数据结构。
【音符进行】通过比较音乐当前播放时间和数组的X=0时,array.At(x,0)的值,产生一个
气泡,产生的数据来源于数组。产生完成后,删除数组x=0的所有值,相当于推进了
一行。然后再次比较,再次产生。通过数组的数据删除,逐步推进游戏的进程。
3.制作谱面的方法
【思考】如何记录谱面数据
勤劳刻苦的人> 1.使用外部音乐软件,手动记录,然后设置导入给数组。
节奏感好的人> 2.使用C2制作录制器,根据音乐手动设置铺面
想要偷懒的人> 3.使用软件程序检测音符,自动生成(不靠谱)
【实现】尽管节奏感不好!但是我就要这样制作!
配合音乐播放,让系统根据鼠标点击的位置记录一个节点。
每次加入节点就在
数组末尾插入一个数值。最后导出为json数据就可以了。