【问题标题】:#Unity3D - How to attach an object to another using a face of the last object as a target#Unity3D - 如何使用最后一个对象的面作为目标将一个对象附加到另一个对象
【发布时间】:2022-11-25 16:29:46
【问题描述】:

我想知道是否可以使用对象的面部(例如,我们将其命名为对象 1),并使用对象 2 的面部将面部作为目标并排放置另一个对象(对象 2)作为第二个目标。

假设我有三个简单的类似盒子的对象,我想通过添加到场景中已经存在的第一个对象来制作不同的组合,然后通过按键盘上的特定键以我想要的任何顺序添加另一个对象和另一个对象(假设对象 2 的 W 键和对象 3 的 S 键)。

不需要和我想的这个方法,但是需要是同一个流程。 它应该考虑对象的大小以及旋转。

【问题讨论】:

  • 您是否尝试过创建一个脚本来转换所需的对象?您对如何检索对象信息有一些限制吗?如果没有,你可以简单地使用一些transform()
  • 我对如何检索信息没有任何类型的限制,只是我不知道如何开始。我是一个新手,所以我真的不知道如何设置代码。对不起...
  • 没问题,我正在尝试获取更多信息,但@Voidsay in his answer 已经显示了我的想法

标签: c# unity3d


【解决方案1】:

一种可能的解决方案是以一种允许您实例化它们的方式仔细制作形状的预制件,以便它们正确对齐。

以下概述显示了您保存为预制件的三个形状。它们是使用 Empty GameObject(蓝色菱形)构建的,并附加 3d 模型(也适用于精灵)并放置另一个旋转的 Empty GameObject(红色菱形),以便绿轴箭头指向普通的。

如果将以下脚本附加到红色菱形 Empty GameObject 并将预制件放入它们的插槽中,您将能够通过分别按 SW 来实例化形状 2 和 3。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Placement : MonoBehaviour
{
    public GameObject shape1, shape2, shape3;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W))
        {
            Instantiate(shape3, transform.position, transform.rotation);
            this.enabled = false;
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            Instantiate(shape2, transform.position, transform.rotation);
            this.enabled = false;
        }
    }
}

请注意,该脚本还会在成功实例化后自行禁用,因此它只会在最后生成形状。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2012-02-13
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多