【Unity】初始化物体的旋转角度
需求:钟表的指针默认位置在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);
}
}
实现物体围绕某一点进行旋转
2017.05.07更新:
- 嫌麻烦,还是用iTween和DoTween插件吧。
【Unity】初始化物体的旋转角度的更多相关文章
- Unity 实现物体破碎效果(转)
感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...
- Unity查找物体的子物体、孙物体
Unity查找物体下的所有物体 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- Unity CommandBuffer物体轮廓
1.command buffer具有很高的灵活性,它的作用是预定义一些渲染指令,然后在我们想要执行的时候去执行这些指令(见图1),绿点表示可以在"Forward Rendering Path ...
- unity 实现物体破碎效果的一些方法 - 细雨淅淅
游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...
- unity 实现物体破碎效果的一些方法
游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...
- 关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影
最近在做unity shader forge和marmoset的优化,TA那边遇到了一个阴影显示的问题,具体如下: 在Forward Rendering状态下,静态场景使用了是shader for ...
- Unity 父物体与子物体位置
酷跑片段本来想做三条轨道,然后通过切换轨道来做,后面发现一种巧妙的方法,利用物体的父级偏移来实现轨道的切换. 比如上图,实际运动的是Car对象,通过修改MineControler的左右位置( ...
- Unity 3D物体的点击事件响应以及NGUI坐标和世界坐标的互相转换
Unity 版本:4.5 NGUI版本:3.6.5 参考链接:http://game.ceeger.com/Script/Camera/Camera.ScreenPointToRay.html,Uni ...
- 关于Unity中物体分别在本地和世界坐标系对应方向的移动
方向 Vector3可以定义以世界坐标轴为参考的三维矢量,Vector3.forward,Vector3.up,Vector3.right方别对应物体世界坐标系的Z,Y,X轴方向的单位向量,或者叫三维 ...
随机推荐
- Google 做过的 12 件奇葩事
Google做了太多伟大的事情了.以至于有时它有点让人难以实时跟上它的动态.假设你对这家公司略微有点感情.看看他们做过的一些有点匪夷所思的事儿,可能认为,毕竟是大公司.还挺难以被全然理解透的. 一个Q ...
- 有用的git片段
世界上知识那么多,又岂是人力所能穷尽,于是术业有专攻.对于git,有用的命令片段其实非常少,而命令却是非常多.于是,掌握git常见的用法就足够了.不要在语句级别上记忆git命令,在代码片段级别上记忆g ...
- WordPress网站搬家的问题
老邢的博客搬家全过程(wordpress搬家知识总结) 网站搬家过程中的几个问题 WordPress网站搬家的方法 WORDPRESS.ORG - zh-cn:WordPress 博客搬家 ...
- ASP.NET 安全系列 Membership三步曲之入门篇 - Jesse Liu
Membership 三步曲 ASP.NET 安全系列 Membership三步曲之入门篇 ASP.NET 安全系列 Membership三步曲之进阶篇 ASP.NET 安全系列 Membership ...
- NuGet学习笔记(1) 初识NuGet及快速安装使用[转]
来自:http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学 ...
- inux --- 服务器性能监控
几个问题 先来看看下面几个问题: CPU.内存以及硬盘的关系是怎样的? 进程和线程是什么?有什么区别?有什么优缺点? 什么是物理内存?什么是虚拟内存?什么时候要用到虚拟内存? 什么是CPU中断?CPU ...
- Android:GridView中实现点击Item变色,再点击还原。
使用GridView时想实现点击其中的一个Item,该Item改变背景,再次点击Item变回原来的背景,网上搜了很多资料都没有看到类似的案例,但还是有所启发,现来分享我的做法. 首先,首先为GridV ...
- activiti 开发环境
1 javadocs 的11 个package org.activiti.engine,包含7个Service接口.异常定义.流程引擎.流程引擎配置和一些运行时异常类. org.activiti.en ...
- python 异步编程
Python 3.5 协程究竟是个啥 Yushneng · Mar 10th, 2016 原文链接 : How the heck does async/await work in Python 3.5 ...
- 一定不要在头文件中using namespace XXX
一定不要在头文件中using namespace XXX,这样会造成名字空间污染,引发ambiguous错误,又难以定位.