using UnityEngine;using System.Collections;public class Shake : MonoBehaviour{ public AudioClip[] clips; public float newAcceX; public float oldAcceX; public float deltaAcceX; public float maxAcceX; public float minAcceX; public float newAcceY; public float oldAcceY; public float deltaAcceY; public float maxAcceY; public float minAcceY; public float newAcceZ; public float oldAcceZ; public float deltaAcceZ; public float maxAcceZ; public float minAcceZ; public float shakeThreshold;//摇晃的阈 public bool isBeginShaking; public bool isReadyToShake; void Awake() { isBeginShaking = true; isReadyToShake = true; Screen.sleepTimeout = SleepTimeout.NeverSleep;//防止手机休眠 } void Update() { newAcceX = Input.acceleration.x; newAcceY = Input.acceleration.y; newAcceZ = Input.acceleration.z; if (Time.frameCount == 1) { maxAcceX = newAcceX; maxAcceY = newAcceY; maxAcceZ = newAcceZ; minAcceX = newAcceX; minAcceY = newAcceY; minAcceZ = newAcceZ; } //获取最大 maxAcceX = (newAcceX >= maxAcceX ? newAcceX : maxAcceX); maxAcceY = (newAcceY >= maxAcceY ? newAcceY : maxAcceY); maxAcceZ = (newAcceZ >= maxAcceZ ? newAcceZ : maxAcceZ); //获取最小 minAcceX = (newAcceX >= minAcceX ? minAcceX : newAcceX); minAcceY = (newAcceY >= minAcceY ? minAcceY : newAcceY); minAcceZ = (newAcceZ >= minAcceZ ? minAcceZ : newAcceZ); if (isReadyToShake) { if (isBeginShaking) { deltaAcceX = 0; deltaAcceY = 0; deltaAcceZ = 0; isBeginShaking = false; } else { //每两帧之间的重力感应增量 deltaAcceX = newAcceX - oldAcceX; deltaAcceY = newAcceY - oldAcceY; deltaAcceZ = newAcceZ - oldAcceZ; } } oldAcceX = newAcceX; oldAcceY = newAcceY; oldAcceZ = newAcceZ; //当增量大于阈时,开始震动并随机播放音乐 if ((deltaAcceX > shakeThreshold) && isReadyToShake) { ShakePhone(); } //返回键退出游戏 if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); } //按菜单键也可以震动并切换音乐 if (Input.GetKeyDown(KeyCode.Menu)) { ShakePhone(); } } void ShakePhone() { //PlayRandom(); Handheld.Vibrate(); isReadyToShake = false; Invoke("ResetShake", 0.5f); } //void PlayRandom() //{ // int length = clips.Length; // audio.clip = clips[Random.Range(0, length)]; // audio.Play(); //} void ResetShake() { isReadyToShake = true; isBeginShaking = true; } void OnGUI() { GUILayout.BeginArea(new Rect(Screen.width / 2 - , Screen.height / 2 - , , )); GUILayout.BeginVertical(); //显示重力感应在各个方向上的 GUILayout.Button("accex:" Input.acceleration.x.ToString()); GUILayout.Button("accey:" Input.acceleration.y.ToString()); GUILayout.Button("accez:" Input.acceleration.z.ToString()); //显示各个方向所能达到的最大和最小,多次摇晃后该固定不变 GUILayout.Button("maxAcceX:" maxAcceX.ToString()); GUILayout.Button("maxAcceY:" maxAcceY.ToString()); GUILayout.Button("maxAcceZ:" maxAcceZ.ToString()); GUILayout.Button("minAcceX:" minAcceX.ToString()); GUILayout.Button("minAcceY:" minAcceY.ToString()); GUILayout.Button("minAcceZ:" minAcceZ.ToString()); GUILayout.EndVertical(); GUILayout.EndArea(); }}
推荐整理分享unity 摇一摇震动(unity摇杆),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity 手柄震动,unity2d摇杆,unity 手柄震动,unity虚拟摇杆控制人物移动,unity 手柄震动,unity摇杆,unity跳一跳,unity摇杆控制方向,内容如对您有帮助,希望把文章链接给更多的朋友!
Unity5.0 RPG角色扮演历险类游戏之 森林历险记
官方教程Stealth学习笔记(一)(持续更新) 今天开始要更新官方教程stealth的学习笔记啦,我将会记录和讲解一个小游戏主要的流程和关键地方的技巧。我会按照官方教程的顺序来更新。秘密潜入1
unity中Android环境的配置 1、首先下载并安装jdk和sdk下载地址: