我的预制件是由3个部分组成的。Match Start, Cube , Match End :
我所做的是,如果你用鼠标点击Match Start或Match End,它将实例化另一个预制克隆。现在,我想做的是,新克隆的预制件将连接从开始或结束(开始和结束都是红色的顶部和底部部分的匹配)与不同的旋转。
例如像:
可能是-90在Z上的新匹配或90在Z上或45,但不是像最后的匹配一样的旋转,因为你不会看到它,它将像一个在另一个。
然后同样的逻辑,当点击新的匹配结束位置创建一个新的匹配,等等。
现在我的脚本的问题是,它在其他地方创建一个新的匹配。
这是我正在使用的脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public GameObject matchPrefab;
private Transform[] StartEndPos;
// Start is called before the first frame update
void Start()
{
var match = Instantiate(matchPrefab);
StartEndPos = match.GetComponentsInChildren<Transform>();
}
// Update is called once per frame
void Update()
{
Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f);
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(mousePos);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.transform.tag == "Match Start" || hit.transform.tag == "Match End")
{
for (int i = 0; i < StartEndPos.Length; i++)
{
if (StartEndPos[i].name == hit.transform.name)
{
var ClonedMatch = Instantiate(matchPrefab, StartEndPos[i].transform.position, Quaternion.identity);
}
}
}
else
{
Debug.Log("Nothing there");
}
}
}
}
}
我刚刚测试了你的代码,它似乎工作,因为它应该 - 基本上。逻辑可能不工作,但实例化确实如此。然而,你能发一张Match prefab的变换值的图片吗?有可能是你的Match prefab没有归零。确保你的预制件是Position (x,y,z) = (0f, 0f, 0f)。如果不是这样,你会得到超级奇怪的实例。