美文网首页
Unity实现震动效果

Unity实现震动效果

作者: LEO_青蛙 | 来源:发表于2019-11-19 12:10 被阅读0次

一、Unity中提供了震动的接口:Handheld.Vibrate(); Unity提供的这个接口的震动时长是0.5s。不能缩短震动时长。

二、在Unity中要自定义震动时长的话,那就得在Android工程和Xcode工程中分别实现震动功能,再在Unity中进行调用。

(1)Android工程的震动接口(供Unity调用):

public void Vibrate
{
    Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
    //调用Android系统的震动接口,自定义时间为5毫秒
    vibrator.vibrate(5);
}

(2)Xcode工程的震动接口(供Unity调用):

.h文件
void Vibrate();

.m文件
#import <UIKit/UIFeedbackGenerator.h>
void Vibrate()
{
    UIImpactFeedbackGenerator *feedBackGenertor = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleLight];
    [feedBackGenertor impactOccurred];
}

(3)Unity调用接口代码

#if UNITY_IOS
    [DllImport("__Internal")]
    public static extern void Vibrate();
#endif
//Unity调用各个平台的震动的代码
public void Vibrate()
{
#if UNITY_ANDROID
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    jo.Call("Vibrate");
#elif UNITY_IOS
    Vibrate();
#endif
}

注意事项:
1、上文写的Android机震动5毫秒,但是在很多Android真机上识别不到,最佳的震动时长,需要在Android真机上测试。
2、Android端的震动代码放在主线程中,如果游戏中需要反复的震动反馈(例如:每帧都需要震动),那游戏中就会掉帧。
3、上文IOS的震动效果只支持iPhone7以后的手机。

相关文章

网友评论

      本文标题:Unity实现震动效果

      本文链接:https://www.haomeiwen.com/subject/qzswictx.html