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

相关文章

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素