简介
目前部分游戏会在播放一些特定的音乐音效时,令设备产生贴合音效的复杂震动,给玩家一个更好的游戏体验。这种复杂震动就是通过苹果的CoreHaptics库实现的。
下面是关于CoreHaptics的官方文档
Core Haptics | Apple Developer DocumentationCompose and play haptic patterns to customize your iOS app’s haptic feedback.https://developer.apple.com/documentation/corehaptics?language=objc
AHAP就是苹果方法提供的震动波形文件。然而通过代码或者文本直接去编辑震动波形是十分困难的,所以本文会借助一个图形化的震动编辑网站https://ahap.fancypixel.it/,介绍AHAP文件的制作和编辑。同时该网站还提供了测试波形的App,编辑后可以直接在移动设备上体验震动效果
AHAP文件制作
该网站编辑页有两个坐标轴,第一个代表Intensity属性,第二个代表Sharpness属性。每个坐标轴的纵轴代表对应属性的大小,横轴代表对应事件的时间
左上角有三个模式选择按钮,分别是添加,编辑和删除模式。
右下角有一个Duration的滚动条,可以拉长和缩短时间轴
添加事件
在添加模式下,鼠标长按左键后拖动,可以在坐标轴对应位置生成一个HapticContinuous事件。方块的高度即为对应属性的大小,宽度代表持续时间(EventDuration)。
在编辑页下显示为一个橙色的方块。
坐标轴下单击鼠标左键,则会生成一个HapticTransient事件,在编辑页下显示为一个蓝色的方块。在添加事件时,Intensity和Sharpness的值都是相同大小的。需要单独改变其中一个属性值需要在编辑模式下进行
编辑事件
点击左上角的编辑按钮,可以看到之前添加的HapticContinuous事件的方块出现了四个圆点,左键点击并拖拽第一个坐标轴上的圆点,上下移动可以单独改变Intensity的属性大小,左右移动则是修改时间的起止时间(此时Sharpness的属性大小不会产生改变)。同理左键点击并拖拽第二个坐标轴上的圆点则是单独改变Sharpness的属性大小
编辑HapticTransient则是直接左键点击并拖拽蓝色的小方块
删除事件
点击左上角的删除按钮,进入删除模式。之后鼠标左键点击事件对应的方块,就可以直接删除该事件
生成AHAP文件
点击右侧的Code按钮,可以查看制作好图形对应的AHAP Json数据
点击弹出页的Copy按钮后将数据复制到一个文本文件并保存即可
Tips:有时候导出的Json文件会缺少Version字段,可能导致后续解析出现问题,需要手动添加Version字段,并且需要设置Version字段为1。否则可能出现震动效果无法播放的情况
加载已有的AHAP文件
点击右侧的Load from JSON按钮
在弹出页内填入已有AHAP文件的JSON数据后点击Load按钮
完成后可以到对应AHAP文件的波形图
MobyApp
该网站还提供了一个MobyApp的demo,用于体验在该编辑网站上生成的Ahap文件,点击主页的MobyApp按钮可以跳转到该github的工程地址。需要使用该App的小伙伴可以找前端开发直接进行安装
该App需要配合网页https://ahap.fancypixel.it/使用。
在该网页编辑完波形图后,点击右下角的save and share按钮。
会弹出一个二维码
之后打开手机上的Moby App 应用,点击下图中的扫码图标,扫上面的生成的二维码
成功地址栏会填充文件地址。此时底部的文字提示为NO HAPTIC LOADED,代表文件还未加载完成。需要点击上面的Load AHAP 按钮
加载完成后,文字提示会变为HAPTIC READY。代表文件已经加载完成,直接点击 PLAY HAPTIC按钮即可播放震动效果