unity-----------------------四元数与欧拉旋转方法
转:http://blog.csdn.net/treepulse/article/details/49281295
Transfrom.eulerAngles
public float yRotation = 5.0F;
void Update() {
yRotation += Input.GetAxis("Horizontal");
transform.eulerAngles = new Vector3(10, yRotation, 0);
//x轴和z轴的旋转角度始终不变,只改变绕y轴的旋转角度
}
- 1
- 2
- 3
- 4
- 5
- 6
Transfrom.rotation
//重设世界的旋转角度
transform.rotation = Quaternion.identity;
- 1
- 2
//平滑倾斜物体向一个target旋转
public float smooth = 2.0F;
public float tiltAngle = 30.0F;
void Update() {
float tiltAroundZ = Input.GetAxis("Horizontal") * tiltAngle;
float tiltAroundX = Input.GetAxis("Vertical") * tiltAngle;
Quaternion target = Quaternion.Euler(tiltAroundX, 0, tiltAroundZ);
//向target旋转阻尼
transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * smooth);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Transfrom.RotateAround
//围绕世界坐标原点,每秒20度物体自旋
transform.RotateAround (Vector3.zero, Vector3.up, 20 * Time.deltaTime);
- 1
- 2
Transfrom.Rotate
//沿着x轴每秒1度慢慢的旋转物体
transform.Rotate(Vector3.right * Time.deltaTime);
//相对于世界坐标沿着y轴每秒1度慢慢的旋转物体
transform.Rotate(Vector3.up * Time.deltaTime, Space.World);
- 1
- 2
- 3
- 4
Transfrom.LookAt
当该物体设置了LookAt并指定了目标物体时,该物体的z轴将始终指向目标物体,在设置了worldUp轴向时,该物体在更接近指定的轴向时旋转便的灵活,注意worldUp指的是世界空间,不论你物体在什么位置,只要接近指定的轴方向,旋转会变的更灵活。
//这个完成的脚本附加到一个摄像机,使它连续指向另一个物体。
//target变量作为一个属性显示在检视面板上
//拖动另一个物体到这个上面,是摄像机注视它
public Transform target;
//每帧旋转摄像机,这样它保持注视目标
void Update() {
transform.LookAt(target);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
// Point the object at the world origin
//使物体注视世界坐标原点
transform.LookAt(Vector3.zero);
- 1
- 2
- 3
Quaternion.LookRotation
//大多数时间可以使用transform.LookAt代替
public Transform target;
void Update() {
Vector3 relativePos = target.position - transform.position;
Quaternion rotation = Quaternion.LookRotation(relativePos);
transform.rotation = rotation;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Quaternion.Angle
//计算transform和target之间的旋转角度
public Transform target;
void Update() {
float angle = Quaternion.Angle(transform.rotation, target.rotation);
}
- 1
- 2
- 3
- 4
- 5
Quaternion.Eulr
//绕y轴旋转30度
public Quaternion rotation = Quaternion.Euler(0, 30, 0);
- 1
- 2
Quaternion.Slerp
//在from和to之间插值旋转.
//(from和to不能与附加脚本的物体相同)
public Transform from;
public Transform to;
public float speed = 0.1F;
void Update() {
transform.rotation = Quaternion.Slerp(from.rotation, to.rotation, Time.time * speed);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
其实任何角度都可以没有限制
Quaternion.FromToRotation
//设置旋转,变换的y轴转向z轴
transform.rotation = Quaternion.FromToRotation (Vector3.up, transform.forward);
- 1
- 2
unity-----------------------四元数与欧拉旋转方法的更多相关文章
- 【Unity编程】Unity中的欧拉旋转
欧拉角的定义 在写这篇博客之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自维基百科的定义,我这里也引述一下: 维基百科定义 莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向.对于任何参 ...
- unity 欧拉旋转
欧拉旋转 在文章开头关于欧拉旋转的细节没有解释的太清楚,而又有不少人询问相关问题,我尽量把自己的理解写到这里,如有不对还望指出. 欧拉旋转是怎么运作的 欧拉旋转是我们最容易理解的一 ...
- Unity四元数和旋转
四元数介绍 旋转,应该是三种坐标变换——缩放.旋转和平移,中最复杂的一种了.大家应该都听过,有一种旋转的表示方法叫四元数.按照我们的习惯,我们更加熟悉的是另外两种旋转的表示方法——矩阵旋转和欧拉旋转. ...
- 转载:点云上实时三维目标检测的欧拉区域方案 ----Complex-YOLO
感觉是机器翻译,好多地方不通顺,凑合看看 原文名称:Complex-YOLO: An Euler-Region-Proposal for Real-time 3D Object Detection ...
- HDU 4135 Co-prime 欧拉+容斥定理
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Unity - 旋转方法
前言 本文梳理了Unity中常用的旋转方法,涉及两大类:Transform.Quaternion. Transform 类 Rotate() 此方法重载多,易理解,在连续动态旋转中较为常用. /* o ...
- 欧拉筛法模板and 洛谷 P3383 【模板】线性筛素数(包括清北的一些方法)
题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入格式 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1 ...
- 用python面向对象的方法实现欧拉算法和龙格库塔算法
#!/bin/python3 # -*-coding:utf-8 -*- import math import numpy as np #定义一个欧拉算法的类,从而实现不同步长的引用 class Eu ...
- poj2409 & 2154 polya计数+欧拉函数优化
这两个题都是项链珠子的染色问题 也是polya定理的最基本和最经典的应用之一 题目大意: 用m种颜色染n个珠子构成的项链,问最终形成的等价类有多少种 项链是一个环.通过旋转或者镜像对称都可以得到置换 ...
随机推荐
- [Windows Azure] .NET Multi-Tier Application Using Storage Tables, Queues, and Blobs - 1 of 5
.NET Multi-Tier Application Using Storage Tables, Queues, and Blobs - 1 of 5 This tutorial series sh ...
- Linux查看系统cpu个数、核心书、线程数
现在cpu核心数.线程数越来越高,本文将带你了解如何确定一台服务器有多少个cpu.每个cpu有几个核心.每个核心有几个线程. 工具/原料 Linux服务器 方法/步骤 查看物理cpu个数 grep ...
- 【Java】Java复习笔记-第三部分
修饰符abstract 抽象的,定义框架不去实现,可以修饰类和方法 abstract修饰类: 会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型 抽象类 ...
- GNU make简介
引言 接触开源项目有一段时间了,对自动化编译工具一直很好奇.近期有时间正好整理下GNU make.后续可以深入了解下. 本文主要整理GNU make的学习的基本资料,同时简要介绍make的功能.语法. ...
- Centos7.4使用SoftEther搭建V.PN
参考: https://blog.csdn.net/qq_39591494/article/details/78625394?locationNum=9&fps=1 https://www.b ...
- hdu1217(spfa,存在环,但需要将环的元素历遍一次.....求乘积的最大)
题意:有n个国家货币,给出m种两个国家之间的货币兑换率,求是否可以盈利....... 思路:其实就是看国家货币兑换间是否存在一个环,使得从v点出发时,dis[v]=1,经过环回到v点时,dis[v]& ...
- C#学习笔记(26)——委托计算器
说明(2017-11-20 15:14:18): 1. 委托一直稀里糊涂的,有人说简单,有人说难,艹你们! 2. 其实主要是因为,平时不用委托也能解决大部分问题,所以都没有特意去用,网上也没有什么很好 ...
- C#学习笔记(4)——sqlserver常用语句
说明(2017-5-26 17:29:05): 需要天天练习: 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] ...
- Linux nginx目录设置
上一节记录了nginx的安装,这里来试着修改下配置文件. #user nobody; worker_processes 1; #error_log logs/error.log; #error_log ...
- Java线程池关闭1-shutdown和isTerminated<转>
shutdownvoid shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务.若已经关闭,则调用没有其他作用.抛出:SecurityException - 如果安全管理器存在并且 ...