当前位置: 首页 > news >正文

Untiy 使用RotateAround()方法实现物体围绕某个点或者某个物体旋转

Untiy 实现物体围绕指定点或者某个物体旋转,可使用RotateAround()方法。

语法:

public void RotateAround(Vector3 point, Vector3 axis, float angle);

其中,point:旋转中心点位置;
axis:要围绕的轴,如x,y,z
angel:旋转的角度

该方法可以实现物体围绕指定的中心点和轴旋转。

下面举例实现围绕某个点旋转和围绕某个物体旋转。

1、围绕某个点旋转。

在场景中创建一个球体。然后编写以下脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class RotateTest : MonoBehaviour
{public float rotationSpeed = 0.01f;public Transform tran;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){tran.RotateAround(new Vector3(10f,0f,0f), Vector3.up* rotationSpeed, 1f);}
}

把脚本放到场景中,并把球体拉到tran参数中,运行场景,球体就会围绕着坐标为(10f,0f,0f),Y轴方向旋转,每帧旋转角度为1。

这里围绕的轴常用的是围绕X轴、Y轴、Z轴,表示法可参考以下:

//X轴表示法
Vector3.right
new Vector3(1,0,0)//Y轴表示法
Vector3.up
new Vector3(0,1,0)//Z轴表示法
Vector3.forward
new Vector3(0,0,1)

2、围绕某个物体旋转,方法大抵相同,主要是要把第一个参数设置为物体的坐标,第二个参数为沿着物体的轴。

同样创建一个球体和一个物体:

创建以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class RotateTest : MonoBehaviour
{public float rotationSpeed = 0.01f;、、public Transform tran;public Transform tran1;public Transform Obj;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//tran.RotateAround(new Vector3(10f,0f,0f), Vector3.up* rotationSpeed, 1f); //围绕点旋转tran1.RotateAround(Obj.position, Obj.up * rotationSpeed, 1f);  //围绕物体旋转}
}

把脚本拉到场景中,把球体赋予tran1,物体赋予Obj,那么就可以实现球体围绕着物体旋转。

最终效果:

Untiy 实现物体围绕指定点或者某个物体旋转

http://www.lryc.cn/news/235514.html

相关文章:

  • 图像分类(五) 全面解读复现ResNet
  • 使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)
  • pandas教程:Time Series Basics 时间序列基础
  • 【C++初阶】STL详解(四)vector的模拟实现
  • Zookeeper学习笔记(2)—— Zookeeper API简单操作
  • YOLOv8-Seg改进:Backbone改进 |Next-ViT堆栈NCB和NTB 构建先进的CNN-Transformer混合架构
  • DocCMS keyword SQL注入漏洞复现 [附POC]
  • 利用(Transfer Learning)迁移学习在IMDB数据上训练一个文本分类模型
  • pom.xml格式化快捷键
  • 【短文】【踩坑】可以在Qt Designer给QTableWidge添加右键菜单吗?
  • Git常用配置
  • 力扣每日一题-数位和相等数对的最大和-2023.11.18
  • 【win32_001】win32命名规、缩写、窗口
  • 机器学习第8天:SVM分类
  • AI工具合集
  • 代码随想录算法训练营Day 54 || 392.判断子序列、115.不同的子序列
  • C 语言 gets()和puts()
  • 核—幂零分解
  • 轻松掌控财务,分析账户花销,明细记录支出情况
  • 竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python
  • 11. Spring源码篇之实例化前的后置处理器
  • Python-Python高阶技巧:HTTP协议、静态Web服务器程序开发、循环接收客户端的连接请求
  • P1304 哥德巴赫猜想
  • CSDN每日一题学习训练——Python版(搜索插入位置、最大子序和)
  • Java在物联网中的重要性
  • 动态规划解背包问题
  • PCL内置点云类型
  • clickhouse数据结构和常用数据操作
  • upload-labs关卡9(基于win特性data流绕过)通关思路
  • C++过河卒问题