IOS复杂震动(Core Haptics)AHAP文件编辑指南

2024-01-03 14:20

本文主要是介绍IOS复杂震动(Core Haptics)AHAP文件编辑指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

目前部分游戏会在播放一些特定的音乐音效时,令设备产生贴合音效的复杂震动,给玩家一个更好的游戏体验。这种复杂震动就是通过苹果的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按钮即可播放震动效果

这篇关于IOS复杂震动(Core Haptics)AHAP文件编辑指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565982

相关文章

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.