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

unity物体移动至指定位置

物体坐标与物体移动

  • 世界坐标与局部坐标之间的转换
  • 物体移动至指定位置
    • 需求
    • 思路
    • 注意

世界坐标与局部坐标之间的转换

在Unity中,物体的坐标分为局部坐标世界坐标
局部坐标是相对于物体的父对象的坐标系,而世界坐标是相对于场景的整体坐标系。

使用transform.position属性来获取物体在世界坐标系下的坐标。
使用transform.localPosition属性来获取物体在世界坐标系下的坐标。
使用transform.TransformPoint将局部坐标系转换为世界坐标系。
使用transform.InverseTransformPoint世界坐标系转换为局部坐标系。

举个例子
在这里插入图片描述

在这里插入图片描述
将下面代码挂载到Sphere上

public class Coordinate : MonoBehaviour
{public GameObject SomeThing;public Vector3 SomePoint;void Start(){Debug.Log("世界坐标:" + transform.position);Debug.Log("局部坐标:" + transform.localPosition);Debug.Log("当前坐标:" + SomePoint);Vector3 worldPoint = transform.TransformPoint(SomePoint);Debug.Log("局部坐标转为世界坐标:" + worldPoint);Vector3 localPoint = transform.InverseTransformPoint(worldPoint);Debug.Log("世界坐标转为局部坐标:" + localPoint);}
}

输出结果如下
在这里插入图片描述

如果想让物体运动到指定的位置,通常情况下是参考世界坐标系。因为世界坐标系是整个场景的坐标系,而局部坐标系是相对于物体的父对象的坐标系。假设想让物体移动到坐标为(x,y,z)的位置,参照世界坐标与局部坐标的物体运动代码如下:

// 世界坐标下运动
transform.position = new Vector3(x, y, z);
// 局部坐标下运动
transform.localPosition = new Vector3(x, y, z);

如果想要实现多个物体以相同的速度按照顺序移动到不同的位置,可以参考下一节。

物体移动至指定位置

需求

将一个由多个零部件组成的自定义模型导入unity中,希望实现该模型的部分拆卸过程。下面以共有11个拆卸步骤为例

思路

在网上找了很多资料,目前想到的办法有利用协程或动画播放的方法(这里只做了协程的方法,动画的等我学会再加上)
1、首先是自定义的模型的拆卸,因此需要知道哪些零部件需要先拆,哪些后拆。
2、还需要考虑碰撞等干涉情况,因此下面代码中有的零部件出现了多次。
3、将所有需要拆卸的零部件创建一个空父对象,下面这个代码就挂载到空父对象上。
4、利用GameObject.Find()函数,找到每个零部件,并放在一个数组里面,便于后续对每个零部件进行操作。
5、将每个零部件需要移动的指定位置与运动时间,同样放在另外两个数组里面。
6、零部件的移动,我使用的是DOTween插件中的DOLocalMove方法。

DOTween插件解析

注意

下面代码有待完善,如“每一步拆卸步骤所有的时间是不一样的,但速度应该是一样,这个我目前还不知道如何解决,只知道运动的位移相同的零件,其运动速度是一样的”
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;public class MoveTogether : MonoBehaviour
{//物体数组public GameObject[] objects;//物体名称数组public string[] Names;//目标位置数组public Vector3[] targetPositions;//运动时间数组public float[] moveTime;void Start(){Names = new string[]{ "一移动螺丝", "一移动螺丝", "中间部分", "铁片1螺丝","铁片1","铁片2螺丝","铁片2","铁片3螺丝","铁片3","整体下方", "整体下方" };objects = new GameObject[Names.Length];for (int i = 0; i < Names.Length; i++){objects[i] = GameObject.Find(Names[i]);}targetPositions = new Vector3[] { new Vector3(0f, 0f, -0.5f),  //一移动螺丝向下new Vector3(3f, 0f, -0.5f),  //一移动螺丝向右new Vector3(0f, 0f, -0.8f), //中间部分向下new Vector3(3f, 0f, 0f),    //铁片1螺丝向外new Vector3(3f, 0f, 0f),    //铁片1向外new Vector3(0f, -2f, 0f),  //铁片2螺丝向外new Vector3(0f, -2f, 0f),  //铁片2向外new Vector3(-3f, 0f, 0f),  //铁片3螺丝向外new Vector3(-3f, 0f, 0f),  //铁片3向外new Vector3(0f, 0f, -0.3f),  //整体下方向下new Vector3(3f, 0f, -0.3f) }; //整体下方向右moveTime = new float[] { 1f,3f,2f,2f,2f,2f,2f,2f,2f,2f,3f };StartCoroutine(Spilt_Merge());}IEnumerator Spilt_Merge(){//StepA.transform.DOLocalMove(targetStepA1, moveSpeed).SetEase(Ease.Linear);for (int i = 0; i < objects.Length; i++){if (i > 0){yield return objects[i - 1].transform.DOLocalMove(targetPositions[i - 1], moveTime[i - 1]).WaitForCompletion();}yield return objects[i].transform.DOLocalMove(targetPositions[i], moveTime[i]).WaitForCompletion();}      }
}

相关文章:

unity物体移动至指定位置

物体坐标与物体移动 世界坐标与局部坐标之间的转换物体移动至指定位置需求思路注意 世界坐标与局部坐标之间的转换 在Unity中&#xff0c;物体的坐标分为局部坐标和世界坐标。 局部坐标是相对于物体的父对象的坐标系&#xff0c;而世界坐标是相对于场景的整体坐标系。 使用tr…...

详解C#-static void Main(string[] args)

目录 简介: 举例: 输出结果:​编辑 总结&#xff1a; 简介: 在C#中static void Main(string[] args)这个句话有什么作用&#xff0c;分别代表什么意思&#xff01;&#xff01; 这句话是入口函数的声明&#xff0c;指定了C#程序的入口点&#xff0c;并定义了一个名为”Mai…...

中大许少辉博士《乡村振兴战略下传统村落文化旅游设计》中国建筑工业出版社八一付梓。

中大许少辉博士《乡村振兴战略下传统村落文化旅游设计》中国建筑工业出版社八一付梓。...

Matplotlib数据可视化(五)

目录 1.绘制折线图 2.绘制散点图 3.绘制直方图 4.绘制饼图 5.绘制箱线图 1.绘制折线图 import matplotlib.pyplot as plt import numpy as np %matplotlib inline x np.arange(9) y np.sin(x) z np.cos(x) # marker数据点样式&#xff0c;linewidth线宽&#xff0c;li…...

Python爬虫——requests_post请求

import requests import jsonurl https://fanyi.baidu.com/sugheaders {User-Agent: ,Cookie: }data {kw: hello }response requests.post(url, data, headersheaders)content response.textobj json.loads(content.encode(utf-8)) print(obj)总结&#xff1a; post请求…...

excel 下载方法封装

1.首先需要拿到后端返回的URL下载地址 2.写个下载方法 // url 接口返回的下载地址。例如&#xff1a;https://cancer-research.oss-cn-beijing.aliyuncs.com/yuance-platform-permission/校内共享数据导入模板.xlsx // name 文件名称 例如&#xff1a; 校内共享数据导入模板 /…...

按日,周,月,季,年统计;获取对应的时间段

按日&#xff0c;周&#xff0c;月&#xff0c;季&#xff0c;年统计&#xff1b;获取对应的时间段 1.周实体类&#xff1a;WeekEntity.java package com.test.common.entity;import java.time.LocalDate;public class WeekEntity {private String day;/*** 开始日期**/privat…...

【eNSP】交换机(vlan和vlan间通信)

【eNSP】交换机&#xff08;vlan和vlan间通信&#xff09; 原理术语过程 实验根据图片连接模块配置设备名称和IP地址配置交换机交换机链路指定sw1配置sw2配置 设置网关交换机互联实验设置查看设置结果 ospf配置 原理 HUB集线器&#xff1a;它的作用可以简单的理解为将一些机器…...

2011年下半年 软件设计师 上午试卷2

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…...

Linux中安装MySQL8版本,安装MySQL步骤,MySQL8离线安装

Linux中安装MySQL8版本的步骤如下&#xff1a; 1.检查下libaio.so.1的位置 [roottdx ]# whereis libaio.so.1 libaio.so: /usr/lib64/libaio.so.1 如果没有找到该文件 (1).在线安装 [roottdx ]# yum install -y libaio (2).离线安装&#xff1a; 上传之后执行命令安装&#…...

MES生产管理系统如何与ERP系统集成

MES生产管理系统和ERP企业管理系统是制造企业信息化的重要组成部分&#xff0c;它们在生产管理、资源计划和业务流程等方面发挥着重要作用。实现MES与ERP系统的集成&#xff0c;可以更好地优化企业生产流程&#xff0c;提高生产效率和降低成本。本文将探讨MES管理系统解决方案如…...

Kafka如何保证消息⼀定能被消费

Kafka 通过多种机制来保证消息一定能被消费&#xff0c;从而实现数据的可靠性和持久性。 以下是一些常见的方法和策略来提高消息的可靠性&#xff1a; 复制机制&#xff1a; Kafka 使用了分区和副本的概念。每个分区可以有多个副本&#xff0c;分布在不同的 Broker 上。当消息…...

[USACO1.5] 八皇后 Checker Challenge

题目描述 一个如下的 6 x 6 的跳棋棋盘&#xff0c;有六个棋子被放置在棋盘上&#xff0c;使得每行、每列有且只有一个&#xff0c;每条对角线&#xff08;包括两条主对角线的所有平行线&#xff09;上至多有一个棋子。 上面的布局可以用序列 2 4 6 1 3 5 来描述&#xff0c;第…...

【Mysql】MVCC版本机制的多并发

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…...

Vue--》打造个性化医疗服务的医院预约系统(六)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…...

Unity ARFoundation 配置工程 (Android)

注意&#xff1a; 1、AR Core是Google的产品&#xff0c;因为谷歌制裁华为&#xff0c;所以 有些 华为机可能不支持AR Core的软件&#xff1b; 2、手机在设置里搜索Google Play&#xff0c;看看是否已经安装上了&#xff0c;如果没有装此服务&#xff0c;去商城里搜索Google Pl…...

【广州虚拟现实开发】VR智能中控系统进一步提高VR教学管理水平

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐走进了人们的生活。在教育领域&#xff0c;VR技术也得到了广泛的应用&#xff0c;尤其是在教学终端中控系统方面。那么&#xff0c;广州华锐互动开发的VR智能中控系统对学校有何益处呢&#xff1f; 首先&#xff0c;VR智…...

关于WordPress 的时间倒计时

点击跳转...

极光笔记 | 如何为您的业务开发和训练一个AI-BOT

生成式AI&#xff08;Generative AI&#xff09;是当今科技领域的前沿技术之一。随着数据量的不断增加和计算能力的不断提升&#xff0c;AI技术在企业和个人生活中的应用越来越广泛。AI-BOT&#xff08;以下简称BOT&#xff09;是生成式AI技术的其中一种重要的应用形式&#xf…...

如何给ELK日志加上索引

问题记录 1、遇到长流程的时候&#xff0c;日志记录是非常重要的。如何排查日志&#xff0c;可以在MDC中去put对应的值&#xff0c;这样就等于对你关心的关键字段加上了索引&#xff0c;在elk中可以通过该索引就能 容易排查到问题 logback的设置 可以参照&#xff1a; 【总体…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...