Geekpeer 发表于 2021-12-28 11:09:25

Unity3D技术之3DTouch实现

近把3DTouch功能加入到游戏中了,调研了一下,其实挺方便了。
代码很简单,如下代码所示,判断当前手机是被是否支持3DTouch ,在Update中获取压力的大小,接着就能做逻辑了。
      //压力的取值在0F-6.xF之间,我们测试4F是个不错的力度
      c**t 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的代码去播放短震动。
#import ‹AudioToolbox/AudioServices.h>
AudioServicesPlaySystemSound(1520);

OK 这就完美了。



来源:网络转载
页: [1]
查看完整版本: Unity3D技术之3DTouch实现