首页 > 其他分享 >Space.World的作用

Space.World的作用

时间:2024-06-05 13:57:39浏览次数:24  
标签:Space 对象 transform 变换 World 坐标系 作用

using UnityEngine;


public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        // 设置游戏对象的位置
        transform.position = new Vector3(5, 2, 10);

        // 设置游戏对象的旋转
        transform.rotation = Quaternion.Euler(30, 45, 0);

        // 设置游戏对象的缩放
        transform.localScale = new Vector3(1, 1, 1);

        // 使游戏对象朝向一个特定的方向
        Vector3 targetDirection = new Vector3(1, 0, 0);
        transform.LookAt(targetDirection);

        // 绕世界空间的Y轴旋转45度
        transform.Rotate(0, 45, 0, Space.World);
    }
}

在Unity中,Space.World 是一个枚举值,属于 Space 枚举类型。Space 枚举用于指定变换(Transform)操作(如旋转和缩放)是相对于世界坐标系还是相对于对象的局部坐标系。

以下是 Space 枚举的两个主要值:

Space.World:表示变换操作是相对于世界坐标系进行的。也就是说,变换是基于整个场景的全局坐标系来计算的,与对象的局部位置和旋转无关。
Space.Self:表示变换操作是相对于对象自身的局部坐标系进行的。也就是说,变换是基于对象的局部空间来计算的,与全局坐标系无关。
使用 Space.World 或 Space.Self 可以帮助开发者更精确地控制变换操作的上下文。

示例代码
以下是使用 Space.World 的一个示例:


using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        // 假设有一个目标对象 targetObject
        GameObject targetObject = GameObject.Find("TargetObject");

        // 使当前对象朝向目标对象,旋转是基于世界坐标系的
        transform.LookAt(targetObject.transform.position, Vector3.up, Space.World);
    }
}

``
在这个示例中,LookAt 方法的第三个参数设置为 Space.World,意味着当前对象将朝向目标对象的方向进行旋转,且旋转是基于世界坐标系来计算的。

为什么需要 Space.World 和 Space.Self?
一致性:在复杂的场景中,多个对象可能相互关联,使用 Space.World 可以确保变换操作不受对象局部坐标系的影响,从而保持一致性。
解耦:使用 Space.World 可以将对象的局部变换与全局变换解耦,使得变换操作更加独立和清晰。
避免累积误差:在某些情况下,基于局部坐标系的连续变换可能导致累积误差,使用 Space.World 可以减少这种误差。
Space.World 和 Space.Self 在处理复杂的空间关系和动画时非常有用,它们提供了灵活性和精确控制的能力。

标签:Space,对象,transform,变换,World,坐标系,作用
From: https://www.cnblogs.com/NiuFacai/p/18232842

相关文章

  • _weak c语言在实际使用中有什么核心作用
    C语言中__weak关键字的核心作用在C语言中,__weak关键字通常用于声明弱符号,它允许在链接阶段出现多个同名函数的情况下,选择性地指定某个函数具有较低的优先级。如果在代码中使用了__weak修饰的函数,并且在链接时没有找到其他同名的强符号函数,那么编译器会自动链接到这个弱符号函......
  • C语言杂谈:从Hello world说起 #include| main| printf| return
    #include<stdio.h>intmain(){ printf("Hellowworld"); return0;}        打印出“Helloworld”的这个程序相信每个人都是见过的,这段代码非常的简单,没有调用函数,没有使用指针,没有各种杂七杂八的东西,但我相信,第一次看见这个代码的朋友一定会有很多疑问。 ......
  • SIP协议:AOR和Contact作用
    sip协议交互的消息中,通常可以看到一些固定的格式,例如:可以看到消息头中包含“From”,"To","Contact"等字段。这些是起到什么作用呢?From和To是消息交互双方使用的域名,供双方作为位置服务使用。可以通过位置服务将一个URI映射到另一个用户可能使用的URI。而Contact字段包含具体的地......
  • :empty 选择器在 css 中不起作用
    我在.error类中使用了:empty选择器。问题是,即使在带有error类的div中没有内容,error类也不会被完全删除。当我在firebug中进行测试时,我发现div中仍有一些空白,而当我删除这些额外的空格时,div就会消失。.error{border:solid1px#ff0000;color:#ff......
  • 今天分享pytest执行自动化测试时,setup和teardown的作用
    1.本章我们要讲解setup_module()和teardown_module()以及setup_function()和teardown_function()、setup()和teardown()、setup_class()和teardown_class()的使用。setup_module()和teardown_module():setup_module是所有用例开始前叧执行一次,teardown_module是所有用例结束后......
  • C语言 恼人的结合性和优先级和副作用
    结合性和优先级和副作用1.优先级2.结合性3.副作用4.简单区分i++,++i,i+=1;i=i+1;i=i++1.优先级优先级指的是,如果⼀个表达式包含多个运算符,哪个运算符应该优先执⾏。各种运算符的优先级是不⼀样的。在C语言中,优先性和结合性规则是非常重要的。然而C语言有几乎50中运算符......
  • PostgreSQL的视图pg_namespace
    PostgreSQL的视图pg_namespace基础信息OS版本:RedHatEnterpriseLinuxServerrelease7.9(Maipo)DB版本:16.2pg软件目录:/home/pg16/softpg数据目录:/home/pg16/data端口:5777在PostgreSQL中,pg_namespace是一个系统表,用于存储所有命名空间(schema)的相关信息。命名......
  • 为什么你的RAG不起作用?失败的主要原因和解决方案
    无数企业正在尝试使用检索增强生成(RAG),但在制作这些系统达到生产质量时普遍会感到失望。因为他们的RAG不仅运行效果差,而且对于如何改进和如何进行后续的工作也感到十分的迷茫。其实阻碍RAG系统的一个关键因素是语义不协调,这是由于任务的预期含义、RAG的理解以及存储的底层知识之间......
  • cuda-toolkit 设置环境变量 CUDA_FORCE_ PTX_JIT的作用
    设置环境变量CUDA_FORCE_PTX_JIT的作用是控制NVIDIACUDA运行时是否强制使用PTX即时编译(Just-In-Timecompilation)。当这个环境变量被设置时,它会对CUDA程序的行为产生以下影响:禁用二进制缓存加载:正常情况下,CUDA运行时会尝试从二进制缓存中加载预先编译好的cubin(CUDA二进制)文......
  • 《计算机网络微课堂》实验25 动态主机配置协议DHCP的作用
    下面我们来进行一个仿真实验,本仿真实验的目的在于验证动态主机配置协议DHCP的作用。我已经在软件中构建好了我们理论课中所使用的那个例子,并在各设备旁边标注出了所需的配置信息,我们的应用需求是不给局域网中的各主机手动配置IP地址,子网掩码、默认网关、DNS服务器等信息,而是......