判断当前手机是被是否支持3DTouch ,在Update中获取压力的大小,接着就能做逻辑了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //压力的取值在0F- 6.xF之间,我们测试4F是个不错的力度 const float PRESSURE_MAX = 4F; void Update () { if (Input.touchPressureSupported) { if (Input.touchCount > 0) { Touch touch = Input.GetTouch (0); if (touch.pressure >= PRESSURE_MAX) { //触发3dtouch } } } #if UNITY_EDITOR //editor下用鼠标右键来模拟 if (Input.GetMouseButtonDown (1)) { } else if (Input.GetMouseButtonUp (1)) { } else if (Input.GetMouseButton (1)) { } #endif } |
Android应该有些手机也支持3DTouch功能。
唯一需要注意的是,当触发3DTouch的时候希望有一个震动的反馈,Unity提供了一个震动的方法 Handheld.Vibrate(); 但是震动的效果不好,因为它是长震动,3DTouch震动应该是短震动。所以这时候播放短震需要调用到oc的代码去播放短震动。
1 2 | #import <AudioToolbox/AudioServices.h> AudioServicesPlaySystemSound(1520); |