崩坏三,有玩吃鸡陀螺仪打不开但是打不开界面晃动怎么回事,画面最高配置也不行

为啥我崩坏3没有陀螺仪系统呢?【崩坏3rd吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,060,134贴子:
为啥我崩坏3没有陀螺仪系统呢?
为啥我崩坏3没有陀螺仪系统呢?
陀螺仪系统不是拿来开车的吗 你是不是想问怎么滑动视角?
这就是你连氵三贴的原因?
不对,是四贴
连水四贴的操作666
看着你的主界面,有没有你心里没点b数?
只有2G网的手机不带陀螺仪系统的
是你手机里面没陀螺仪呗
贴吧热议榜
使用签名档&&
保存至快速回贴Hello ,I am KitStar
如果您碰到什么其他问题的话,欢迎来 我自己的一个 讨论群来,大家一起找答案,共同进步
玩过手游崩坏3的应该会发现游戏里面的UI 界面还有一些场景 会根据 玩家手机的平衡状态对UI或者相机进行位移或者旋转。
&&&&今天我们要使用移动端的重力感应,做类似的效果,来增加UI界面的流动感.
&&&&其实就是通过移动端的重力感应获得一个 三维向量,然后根据这个向量,对目标 UI 进行 旋转,位移 等等操作。
首先我们先了解移动端手机陀螺仪的向量方向。首先,水平拿着手机,有Home键的一端右手拿。然后,由于图可知,绿线X轴就是垂直向上的线,Y轴就是水平向左的线。而Y轴就是伸向手机屏幕里面的线。在你左右前后摇动手机的时候。Unity 可以通过 Input.acceleration获取一个Vector3,用来记录这三个值的变化。记住,这三个值的取值都在 -1 到 1.
既然,知道了怎么获取手机的陀螺仪的变化。那么,通过这个值我们用来控制UI或者其他任何对象。
但是,要让Unity 的UI 进行位移,旋转变化的话。还得先设置点东西。首先找到 UI画布的Canvas组件。修改Render Mode为Screen Space-Camera.并且指定相应的的Camera。进行这一步操作,你的UI 才可以进行正确的位移和旋转。
其次呢。就是逻辑了。我们在这里是运用手机的X轴的变化来改变tager对象的Y轴旋转,X轴移动; Y轴的变化来改变tager对象的X轴旋转,Y轴移动;Z轴的变化只去改变tager对象的Z轴位置。
剩下的就比较简单了,就是代码了,所以老规矩上脚本吧。代码没有优化,比较智障,请平复一下心情再看。
using System
using UnityEngine
[Serializable]
public class SetUp
[Tooltip("敏感度")]
public float sensitivity = 15f
[Tooltip("最大水平移动速度")]
public float maxturnSpeed = 35f
[Tooltip("最大垂直傾斜角移动速度")]
public float maxTilt = 35f
[Tooltip("位移加成速率")]
public float posRate = 1.5f
public class MobileScreenOrientation : MonoBehaviour
public enum MotionAxial
public enum MotionMode
Postion = 1,
//只是位置辩护
Rotation = 2,
//全部变化
//就是这里比较笨了。本来使用UnityEditor类库的多选功能。但是这个类库不支持移动平台。
public MotionAxial motionAxial1 = MotionAxial.y
public MotionAxial motionAxial2 = MotionAxial.None
public MotionMode motionMode = MotionMode.Rotation
public SetUp setUp
public GameObject tager
Vector3 m_MobileOrientation
Vector3 m_tagerTransform
Vector3 m_tagerPos
public Vector3 ReversePosition = Vector3.one
void Awake()
Screen.orientation = ScreenOrientation.Landscape
m_tagerTransform = Vector3.zero
m_tagerPos = Vector3.zero
void LateUpdate()
if (tager == null)
m_MobileOrientation = Input.acceleration
if (motionAxial1 == MotionAxial.None && motionAxial2 == MotionAxial.None)
//不操作任何轴
else if (motionAxial1 == MotionAxial.x && motionAxial2 == MotionAxial.None)
m_tagerTransform.x = Mathf.Lerp(m_tagerTransform.x, m_MobileOrientation.y * setUp.maxTilt * ReversePosition.x, 0.2f)
else if (motionAxial1 == MotionAxial.y && motionAxial2 == MotionAxial.None)
m_tagerTransform.y = Mathf.Lerp(m_tagerTransform.y, -m_MobileOrientation.x * setUp.maxturnSpeed * ReversePosition.y, 0.2f)
else if (motionAxial1 == MotionAxial.z && motionAxial2 == MotionAxial.None)
m_tagerTransform.z = Mathf.Lerp(m_tagerTransform.z, -m_MobileOrientation.z * setUp.maxTilt * ReversePosition.z, 0.2f)
else if (motionAxial1 == MotionAxial.x && motionAxial2 == MotionAxial.y)
m_tagerTransform.y = Mathf.Lerp(m_tagerTransform.y, -m_MobileOrientation.x * setUp.maxturnSpeed * ReversePosition.y, 0.2f)
m_tagerTransform.x = Mathf.Lerp(m_tagerTransform.x, m_MobileOrientation.y * setUp.maxTilt * ReversePosition.x, 0.2f)
else if (motionAxial1 == MotionAxial.y && motionAxial2 == MotionAxial.x) // Y和X轴
m_tagerTransform.y = Mathf.Lerp(m_tagerTransform.y, -m_MobileOrientation.x * setUp.maxturnSpeed * ReversePosition.y, 0.2f)
m_tagerTransform.x = Mathf.Lerp(m_tagerTransform.x, m_MobileOrientation.y * setUp.maxTilt * ReversePosition.x, 0.2f)
else if (motionAxial1 == MotionAxial.x && motionAxial2 == MotionAxial.z)
// x 和 Z 轴
m_tagerTransform.x = Mathf.Lerp(m_tagerTransform.x, m_MobileOrientation.y * setUp.maxTilt * ReversePosition.x, 0.2f)
m_tagerTransform.z = Mathf.Lerp(m_tagerTransform.z, -m_MobileOrientation.z * setUp.maxTilt * ReversePosition.z, 0.2f)
else if (motionAxial1 == MotionAxial.z && motionAxial2 == MotionAxial.x)
// Z 和 X 轴
m_tagerTransform.x = Mathf.Lerp(m_tagerTransform.x, m_MobileOrientation.y * setUp.maxTilt * ReversePosition.x, 0.2f)
m_tagerTransform.z = Mathf.Lerp(m_tagerTransform.z, -m_MobileOrientation.z * setUp.maxTilt * ReversePosition.z, 0.2f)
else if (motionAxial1 == MotionAxial.y && motionAxial2 == MotionAxial.z)
// Y和Z 轴
m_tagerTransform.y = Mathf.Lerp(m_tagerTransform.y, -m_MobileOrientation.x * setUp.maxturnSpeed * ReversePosition.y, 0.2f)
m_tagerTransform.z = Mathf.Lerp(m_tagerTransform.z, -m_MobileOrientation.z * setUp.maxTilt * ReversePosition.z, 0.2f)
else if (motionAxial1 == MotionAxial.z && motionAxial2 == MotionAxial.y)
// Z和 Y轴
m_tagerTransform.y = Mathf.Lerp(m_tagerTransform.y, -m_MobileOrientation.x * setUp.maxturnSpeed * ReversePosition.y, 0.2f)
m_tagerTransform.z = Mathf.Lerp(m_tagerTransform.z, -m_MobileOrientation.z * setUp.maxTilt * ReversePosition.z, 0.2f)
else if (motionAxial1 == MotionAxial.All && motionAxial2 == MotionAxial.All)
// 所有轴向都运动
m_tagerTransform.y = Mathf.Lerp(m_tagerTransform.y, -m_MobileOrientation.x * setUp.maxturnSpeed * ReversePosition.y, 0.2f)
m_tagerTransform.x = Mathf.Lerp(m_tagerTransform.x, m_MobileOrientation.y * setUp.maxTilt * ReversePosition.x, 0.2f)
m_tagerTransform.z = Mathf.Lerp(m_tagerTransform.z, m_MobileOrientation.z * setUp.maxTilt * ReversePosition.z, 0.2f)
m_tagerPos.x = m_tagerTransform.y
m_tagerPos.y = -m_tagerTransform.x
m_tagerPos.z = m_tagerTransform.z
if (motionMode == MotionMode.Postion)
tager.transform.localPosition = Vector3.Lerp(tager.transform.localPosition, m_tagerPos * setUp.posRate, Time.deltaTime * setUp.sensitivity)
else if (motionMode == MotionMode.Rotation)
tager.transform.localRotation = Quaternion.Lerp(tager.transform.localRotation, Quaternion.Euler(m_tagerTransform), Time.deltaTime * setUp.sensitivity)
tager.transform.localPosition = Vector3.Lerp(tager.transform.localPosition, m_tagerPos * setUp.posRate, Time.deltaTime * setUp.sensitivity)
tager.transform.localRotation = Quaternion.Lerp(tager.transform.localRotation, Quaternion.Euler(m_tagerTransform), Time.deltaTime * setUp.sensitivity)
效果展示:
Unity-陀螺仪控制Camera旋转
using UnityE
using System.C
public class cameracontroller : MonoBehaviour
Unity3D 使用陀螺仪 检查手机方向 设置固定的旋转角度
namespace UnityEngine
public enum ScreenOrientation
Unknown = 0,
Portrai...
Unity3d UGUI
控制Image的旋转
今天的天气真的是很好啊
Unity实现对移动端的陀螺仪控制
using System.C
using System.Collections.G
using UnityEpublic class GyroContr...
用于unity手机游戏开发的&em&陀螺仪&/em&插件,导入后会有过时代码的报错,Rigibody.Position用法的过时报错,请自行修改
Unity3D中通过陀螺仪来控制摄像机的旋转
网上大部分关于陀螺仪的应用都是直接通过欧拉角赋值,但是那样应用到手机后,会存在误差,即使不动的时候,物体也会有些许偏移,这个就很好的解决了这个问题,...
unity在安卓设备上滑动旋转场景实现
在PC端unity通过鼠标拖动来旋转观看场景的方法非常简单,但是在安卓设备上无法很好的使用。
下面方法可以实现在安卓设备上手指滑动屏幕就可以旋转观看场景,还可以通过两个或多个手指来对场景放大缩小。
【unity实用技能】unity3d 陀螺仪控制camera移动旋转
https://docs.unity3d.com/ScriptReference/Gyroscope.html
unity 官方文档就很清楚,只有一点要注意:
所有教程都教你怎么用
没有更多推荐了,

我要回帖

更多关于 绝地求生陀螺仪打不开 的文章

 

随机推荐