【Unity】初始化物体的旋转角度
来源:互联网 发布:软件测试的方法有 编辑:程序博客网 时间:2024/06/06 04:57
需求:钟表的指针默认位置在0点,在初始化时会根据当前的时间,旋转到一定角度。然后才是在当前旋转角度下每帧继续旋转。
问题:网上搜到的关于物体的旋转,基本都是给定一个速度的持续运动,而现在需要的是一个即时的效果。
看一看文档:https://docs.unity3d.com/ScriptReference/Transform.Rotate.html
其实还是使用Transform.Rotate,但是文档中的所有案例都是给定速度的持续运动,因为这个过程写在了Update()中,会每帧被调用,所以传参Time.deltaTime都是在指定每秒钟旋转的角度。
其实这里可以直接写在Start()里面,只在初始化时执行一次,传参为我们想要的角度,即可实现初始化就立即旋转到指定角度。
分针的运动脚本:
using System;using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 分针绕着轴心旋转的动画/// </summary>public class MPRotateAnim : MonoBehaviour { public GameObject axesObj; // 轴心物体 private float speed = 6; // 旋转速度,6度/分钟。 private float loop = 60; // 用于计算转一圈的角度。时针为24,分针秒针为60。 // Use this for initialization void Start () { // 初始化当前指针的位置和角度 DateTime now = DateTime.Now; float degree = now.Minute / loop * 360; Debug.Log("MPdegree = " + degree); gameObject.transform.Rotate(0, 0, -degree, Space.Self); Debug.Log("gameObject.transform.rotation = " + gameObject.transform.rotation); } // Update is called once per frame void Update () { gameObject.transform.RotateAround(axesObj.transform.position, -Vector3.forward, speed / 60 * Time.deltaTime); }}
时针的运动脚本:
using System;using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 时针绕着轴心旋转的动画/// </summary>public class HPRotateAnim : MonoBehaviour { public GameObject axesObj; // 轴心物体 private float speed = 30; // 旋转速度,30度/小时。 private float loop = 24; // 用于计算转一圈的角度。时针为24,分针秒针为60。 // Use this for initialization void Start () { // 初始化当前指针的位置和角度 DateTime now = DateTime.Now; float degree = (now.Hour * 60 + now.Minute) / (loop * 60) * 360; Debug.Log("HPdegree = " + degree); gameObject.transform.Rotate(0, 0, -degree, Space.Self); Debug.Log("gameObject.transform.rotation = " + gameObject.transform.rotation); } // Update is called once per frame void Update () { gameObject.transform.RotateAround(axesObj.transform.position, -Vector3.forward, speed / (60 * 60) * Time.deltaTime); }}
另外一些关于旋转的常见问题
根据输入每帧进行旋转、平移
public class ExampleClass : MonoBehaviour { public float speed = 10.0F; public float rotationSpeed = 100.0F; void Update() { float translation = Input.GetAxis("Vertical") * speed; float rotation = Input.GetAxis("Horizontal") * rotationSpeed; translation *= Time.deltaTime; rotation *= Time.deltaTime; transform.Translate(0, 0, translation); transform.Rotate(0, rotation, 0); }}
实现物体围绕某一点进行旋转
http://blog.csdn.net/qiaoquan3/article/details/51306514
0 0
- 【Unity】初始化物体的旋转角度
- unity rotate 旋转物体 限制物体旋转角度 的大坑
- Unity如何限制3D物体的旋转角度
- Unity设置物体旋转角度误区
- Unity 获取物体正前方绕Y轴旋转一定角度后的方向
- Unity滑动屏幕控制物体的旋转
- Unity物体或摄像机的旋转缩放
- Unity 控制相机绕物体的旋转
- Unity 控制相机绕物体的旋转
- Unity物体全方位旋转
- opencv12-计算物体旋转角度
- Transform---绝望的欧拉角-=限制物体的旋转角度
- Unity 旋转角度计算
- Unity 拖动鼠标物体旋转
- unity摄像机环绕物体旋转
- unity 一个物体相对另一个物体坐标系的偏转角度计算
- 让物体围绕自身某一点旋转的方法 Unity
- unity 根据鼠标的移动来旋转物体Rotate
- java起步
- 动态加载当前年份的前五年后十年
- 欢迎使用CSDN-markdown编辑器
- RMQ
- 让我们旋转跳跃不停歇~~~当3D打印遇上八音盒!(二)
- 【Unity】初始化物体的旋转角度
- 深入理解卷积神经网络(卷积篇)(Convolutional Neural Networks, CNNs)
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【申明:来源于网络】
- 【鸟哥Linux】文件与文件系统的压缩/打包/备份
- windows和linux之间的文件传输和控制
- 使用VC++监听文件改变
- python指定解释器
- hdu 1715
- Java 职责链模式