Unity实现震动反馈效果
发表于2019-01-09
手机的震动效果相信大家都不陌生,知道这个功能,但是有多少人了解这个功能是怎么实现出来的呢,又如何将这个功能结合到我们在做的项目中去呢,下面就给大家分享下在unity中如何去实现震动反馈效果。
二、在Unity中要自定义震动时长的话,那就得在android工程和Xcode工程分别实现震动功能,再在unity中进行调用。
android工程震动:
///供unity调用的接口 public void setVibrator() { Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); ///调用android系统的震动接口,自定义时间为5毫秒 vibrator.vibrate(5); }
XCode工程震动:
.h文件
void setVibratorIOS();
.m文件
#import <UIKit/UIFeedbackGenerator.h> void setVibratorIOS(){ UIImpactFeedbackGenerator *feedBackGenertor = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleLight]; [feedBackGenertor impactOccurred]; }
Unity端调用代码
#if UNITY_IOS [DllImport("__Internal")] public static extern void setVibratorIOS(); #endif ///unity调用各个平台的震动的代码 public void setVibrator() { #if UNITY_ANDROID AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("setVibrator"); #elif UNITY_IOS setVibratorIOS(); #endif }
注:
1、上文写的android机震动5毫秒,但是在很多android真机上识别不到,最佳的震动时长,需要在android真机上测试。
2、android端的震动代码放在主线程中,如果游戏中需要反复的震动反馈(例如:每帧都需要震动),那游戏中就会掉帧
3、上文ios的震动效果只支持iPhone7以后的手机。