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以后的手机。
