unity 角度旋转限制,使用四元数方式

angle += state.ThumbSticks.Left.Y * 25.0f * Time.deltaTime;//俯仰角

var kk = Mathf.Clamp(angle, -30, 30);
Quaternion _kk = new Quaternion();
_kk = Quaternion.AngleAxis(kk, Vector3.left);//上下旋转

angle2 += state.ThumbSticks.Left.X * 25.0f * Time.deltaTime;//俯仰角
Quaternion _kk2 = new Quaternion();
_kk2 = Quaternion.AngleAxis(angle2, Vector3.up);//左右旋转

var gg = _kk * originRotation;
My.transform.localRotation = _kk2 * gg;

时间: 2024-11-07 03:35:11

unity 角度旋转限制,使用四元数方式的相关文章

刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)

最近学习了一些关于三维空间旋转相关的知识,借此梳理一下备忘. 三维空间的旋转(3D Rotation)是一个很神奇的东东:如果对某个刚体在三维空间进行任意次的旋转,只要旋转中心保持不变,无论多少次的旋转都可以用绕三维空间中某一个轴的一次旋转来表示.表示三维空间的旋转有多种互相等价的方式,常见的有旋转矩阵.DCM.旋转向量.四元数.欧拉角等.本篇文章主要梳理一下这些表示方式及相互转换的方法. 1. 欧拉角(Euler Angle) 最直观的表示方式是绕刚体自身的X.Y.Z三个轴分别进行旋转某个角度

基于VB的hough变换和任意角度旋转

Public Sub DoRotate(Optional ByVal RotaryAngle As Long = 0) '任意角度旋转 Dim sDIB As New cDIB Dim sBits() As RGBQUAD Dim dBits() As RGBQUAD Dim stSA As SAFEARRAY2D Dim dtSA As SAFEARRAY2D Dim Lev As Long Dim Wgt As Long Dim x As Long Dim y As Long Dim new

Unity复杂的旋转-欧拉角和四元数

一.欧拉角欧拉角最容易表示,用三个变量X,Y,Z可以直观的表示绕着某个轴的旋转角度. 在Unity里就是Transform组件的Rotation里的X Y Z三个变量代表了欧拉角 二.四元数四元数相比于欧拉角就比较复杂了,由四个变量组成(在Unity中称为X,Y,Z,W),但是这些变量的值不代表旋转角度,所以可能给你一个向量(0.7,0,0,0.7)你并不知道实际旋转的角度,当然四元数的详细解释需要数学方面的深入研究,有兴趣的可以自行查找有关资料 因为在Unity没有可视化界面可以调整四元数(因

Java实现图片内容无损任意角度旋转

转自:http://blog.csdn.net/heliang7/article/details/7309394 主要问题是如何在图片做旋转后计算出新图片的长宽. 在java 2d和基本math库的帮助下,其实利用简单的计算就可以知道. 以下算法只是计算出旋转小于90度时的公式.当旋转大于90时,可以先把问题域换算到锐角的情况,再进行计算即可. 如下图所示,需要计算出来的是len_delta的长度,就是有双竖线的位置,它是新图片要增加的宽.(要增加的高度同理可得.) 其实只要知道len的长度,还

Quaternion控制物体旋转的俩种方式

1 eulerAngles:欧拉角   此属性用来返回或者是设置Quaternion实例对应的欧拉角 对GameObject对象的Transform进行欧拉角的变换次序是,先绕Z轴->X轴->Z轴    注意:不同的旋转次序得到的最终状态是不同的. 对GameObject对象的旋转角进行赋值的方式通常有两种: 第一种是将Quaternion实例赋值给 transform的rotation 第二种是将三维向量代表的欧拉角直接复制给transform的eulerAngles 如: public T

Unity知识三:两种方式实现切水果的刀痕

Unity作为游戏开发平台之一,还是有很多实用的小技巧的,今天来学习一下怎样用两种方式来显示切水果游戏中的刀痕: 1.正常显示下的刀痕: 什么叫正常显示下的呢?我们所接触过的切水果游戏一般都是2D游戏,那我们知道,2D游戏可以用Unity直接来做,还可以使用NGUI.UGUI或者其他方法通过UI来实现. 所以我们第一种方法就是不借助UI来做. 首先来看看我们刀痕的素材:(需要的同学可以右键另存.^_^) 打开Unity: 新建一个空游戏体,命名为"BackGround",然后在组件面板

unity 对象旋转,自转

1.对象具体的围绕哪个轴旋转,对应的设置值: transform.Rotate(new Vector3(1,0,0));  //绕x轴旋转    //默认是物体围绕世界坐标的XYZ轴旋转,即物体绕着世界中心0,0,0的Y轴进行旋转.该语句相当于transform.Rotate(new Vector3(1,0,0),Space.World);若需要自转,改变该参数即可,栗子transform.Rotate(new Vector3(1,0,0).Space.Self); 2.设置旋转中心,围绕其旋转

Material DesignDrawerLayout的旋转箭头的实现方式。

实际上,官方已经提供了实现方法,但是,有很多捞偏门的教程,也有很优秀的第三方.写出来,供还没找到的同学参考. 前提是:你对android.support.v7.widget.Toolbar已经有过了解了. mMainBar = (Toolbar)this.findViewById(R.id.main_bar); this.setSupportActionBar(mMainBar); mDrawerLayout = (DrawerLayout)this.findViewById(R.id.main

Unity 获取服务器时间 HTTP请求方式

在写每日签到的时候,我居然使用的是本地时间...被项目经理笑哭了...., 如果你在写单机游戏,没有游戏服务器,但又不想使用本地时间,就可以采用下面方法. 方法总结: 1. 使用HTTP请求获取服务器时间,不能实时获取服务器时间这样高频率的 2. 使用socket可以实时获取服务器时间 3. 使用C#自带API获取sql server 标准北京时间(=.=还没有找到这个API) 第HTTP方式: 代码: using UnityEngine; using System.Collections; u