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 ...
随机推荐
- FMXUI - UI.Dialog 示例(比较漂亮)
在 FMXUI 开源库,增加了 UI.Dialog 单元.此单元实现了跨平台的基础对话框组件.使用时引用 UI.Dialog 即可.如果需要自定义对话框的样式, 可以添加一个 TDialogStyle ...
- Chart.js报告
引进需要Chart.js <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE ...
- PO、VO、BO、DTO、POJO、DAO之间的关系
J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...
- Asp.net-MyFirstMVCProject详细解释
一个URL要求, ASP.NET MVC引擎将分析URL要使用Controller, 这个Controller(取而代之的是,真实的方法Controller的Action)从数据库或者其它数据源获取数 ...
- react项目实践——(3)babel
1. babel Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. (1)安装 npm install --save-dev babel-core babel-e ...
- docker端口映射或启动容器时报错Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen
现象: [root@localhost ~]# docker run -d -p 9000:80 centos:httpd /bin/sh -c /usr/local/bin/start.shd5b2 ...
- 推荐几个js的好链接
JavaScript 之美 其一:http://fxck.it/post/72326363595 其二:http://fxck.it/post/73513189448
- .net core使用ef 6
需要是core(with full .net framework)的项目,因为core本身不支持ef 6 注意新建的项目是.net framework+.net core的 有空来填坑,参考资料写的很 ...
- 关于WPF后台触发键盘按键
1.变向响应Tab按键 private void Grid_KeyUp(object sender, KeyEventArgs e) { UIElement e ...
- DateTime格式转换结果
Console.WriteLine(string.Format("ToLongDateString:{0}", DateTime.Now.ToLongDateString())); ...