unity中实现物体在一定角度范围内来回旋转
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Rotate : MonoBehaviour {
private float origionZ;
private Quaternion targetRotation;
public float RotateAngle = ;
public int count = ;
private bool i;
// Use this for initialization
void Start () {
origionZ = transform.rotation.z;
} // Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.D))//当按下D时进行旋转
{
if (count >= 3)
{
i = false;
}
if (count <= )
{
i = true;
} if (i == true)
{
count++;
targetRotation = Quaternion.Euler(, , RotateAngle * count + origionZ) * Quaternion.identity;
}
if(i==false)
{
count--;
targetRotation = Quaternion.Euler(,,RotateAngle*count+origionZ) * Quaternion.identity;
} }
else
{
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * );
//避免误差
if (Quaternion.Angle(targetRotation, transform.rotation) < )
transform.rotation = targetRotation;
} }
}
使用四元数可以避免万向锁的问题,并且实现平滑转化。当按下D键时,物体的z轴会旋转60度,在该脚本中,物体的Z轴在0~180度之间来回变化,其中count的值可以改变,造成的结果就是角度范围和旋转次数的变化。
该脚本可适用于uinty中需要旋转指示的对象,如按钮,把手,门等物体。
unity中实现物体在一定角度范围内来回旋转的更多相关文章
- Unity中Instantiate物体失效问题
才开始学Unity,开始总是这样用Instantiate函数: GameObject temp = (GameObject)Instantiate(bulletSource, transform.po ...
- Unity中获取物体的子物体
如果想获取一级子节点 foreach (Transform child in this.transform) { Debug.Log(child.name); } 如果想获取所有子节点 foreach ...
- Unity中使物体自动寻路的方法
在做一个FPS游戏时,需要敌方自动找到玩家方位并向玩家移动,在查找资料(并走了不少坑)后,我试了三个方法,经测试,这三个方法都能实现自动寻路功能. 方法一:使用Mathf.Lerp()方法 代码很简单 ...
- unity中让物体移动到鼠标点击地面任一点的位置(单击移动和双击暂停移动)并生成图标
using UnityEngine; using System.Collections.Generic; using UnityEngine.EventSystems; using UnityEngi ...
- Unity中激活子物体
void GetChildrenAndSetActive() { Transform[] imageTargetObjects = GetComponentsInChildren<Transfo ...
- 【Unity笔记】物体的Transform操作:速度、旋转、平移
例如,通过按键/摇杆来操作飞机在三维空间的飞行状态.包括速度(大小,方向).位移. public class ExampleClass : MonoBehaviour { public float s ...
- Unity中确定时间是否在一定范围内
NowTime = DateTime.Now.ToLocalTime(); Timeyear = DateTime.Now.ToLocalTime().ToString("yyyy-MM-d ...
- Unity中通过深度优先算法和广度优先算法打印游戏物体名
前言:又是一个月没写博客了,每次下班都懒得写,觉得浪费时间.... 深度优先搜索和广度优先搜索的定义,网络上已经说的很清楚了,我也是看了网上的才懂的,所以就不在这里赘述了.今天讲解的实例,主要是通过自 ...
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...
随机推荐
- python 教程 第五章、 函数
第五章. 函数 定义语句后面要加冒号 1) 定义函数 def sayHello(): print 'Hello World!' sayHello() 2) 变量作用域 LEGB原则 L本地 ...
- WPF 透明掩码 OpactiyMask
原文:WPF 透明掩码 OpactiyMask 在WPF中提供了Opacity属性使得元素的所有内容都是透明的.而OpacityMask属性可以使元素的特定区域变成透明. OpacityMask属性接 ...
- java的System.getProperty()值的方法可以得到
java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装 ...
- POJ - 2991 Crane (段树+计算几何)
Description ACM has bought a new crane (crane -- jeřáb) . The crane consists of n segments of variou ...
- 【转载】MySQL双主双从高可用集群架构
双浮动VIP 原文地址:http://www.linuxcache.com/archives/2907 转载请注明原文地址.
- js 层的显示和隐藏
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- ELINK编程器典型场景之远程镜像
当不想直接提供Hex/Bin等二进制程序文件给用户时,通过生成远程镜像功能将程序文件加密后,再提供给用户自行脱机下载来达到远程更新的目的. 远程镜像生成的一般步骤为由客户端提供SN码,本地依据SN码加 ...
- swift 如何控制view的显示与隐藏
swift 如何控制view的显示与隐藏 UIView有一个属性 hidden let line: UILabel = UILabel() 默认是显示的 需要显示它的时候:line.hidden = ...
- C# 设置IP地址及设置自动获取IP
原文:C# 设置IP地址及设置自动获取IP </pre><pre name="code" class="csharp">1.添加引用&q ...
- 零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下)
原文:零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下) 上篇提到了Visual State Manager中文翻译为视觉状态 ...