如何将不同预制件的位置更新到当前位置?
How do I update the position of different prefabs to the current position?
我正在制作一个游戏,玩家是一个正方形,当他按下一个键时它会改变形状。为此,我制作了不同的预制件,因为我有不同的东西要改变。当我按下键更改为一个预制件时,我将相应的预制件设置为活动状态并禁用另一个。问题就在这里,我有三个预制件,我不知道在哪里连接来改变位置运行时。我试图使位置与其他位置相等,但没有用。
这是我做的代码:
public class Transformation : MonoBehaviour
{
public GameObject normal, small, big;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown("q"))
{
big.SetActive(true);
normal.SetActive(false);
small.SetActive(false);
big.transform.position = normal.transform.position = small.transform.position;
}
if (Input.GetKeyDown("w"))
{
normal.SetActive(true);
big.SetActive(false);
small.SetActive(false);
normal.transform.position = big.transform.position = small.transform.position;
}
if (Input.GetKeyDown("e"))
{
small.SetActive(true);
normal.SetActive(false);
big.SetActive(false);
small.transform.position = big.transform.position = normal.transform.position;
}
}
}
清空一个 GameObject
并对其应用所有移动逻辑。将普通、小型和大型对象作为主要 GameObject
的子对象,并根据需要 enable/disable 放置它们。
如果要将这些gameObjects的位置移动到脚本对象的位置。最好试试这个:
void Update()
{
small.SetActive(false);
normal.SetActive(false);
big.SetActive(false);
if (Input.GetKeyDown("q"))
{
big.SetActive(true);
big.transform.position = transform.position;
}
else if (Input.GetKeyDown("w"))
{
normal.SetActive(true);
normal.transform.position = transform.position;
}
else if (Input.GetKeyDown("e"))
{
small.SetActive(true);
small.transform.position = transform.position;
}
}
我正在制作一个游戏,玩家是一个正方形,当他按下一个键时它会改变形状。为此,我制作了不同的预制件,因为我有不同的东西要改变。当我按下键更改为一个预制件时,我将相应的预制件设置为活动状态并禁用另一个。问题就在这里,我有三个预制件,我不知道在哪里连接来改变位置运行时。我试图使位置与其他位置相等,但没有用。
这是我做的代码:
public class Transformation : MonoBehaviour
{
public GameObject normal, small, big;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown("q"))
{
big.SetActive(true);
normal.SetActive(false);
small.SetActive(false);
big.transform.position = normal.transform.position = small.transform.position;
}
if (Input.GetKeyDown("w"))
{
normal.SetActive(true);
big.SetActive(false);
small.SetActive(false);
normal.transform.position = big.transform.position = small.transform.position;
}
if (Input.GetKeyDown("e"))
{
small.SetActive(true);
normal.SetActive(false);
big.SetActive(false);
small.transform.position = big.transform.position = normal.transform.position;
}
}
}
清空一个 GameObject
并对其应用所有移动逻辑。将普通、小型和大型对象作为主要 GameObject
的子对象,并根据需要 enable/disable 放置它们。
如果要将这些gameObjects的位置移动到脚本对象的位置。最好试试这个:
void Update()
{
small.SetActive(false);
normal.SetActive(false);
big.SetActive(false);
if (Input.GetKeyDown("q"))
{
big.SetActive(true);
big.transform.position = transform.position;
}
else if (Input.GetKeyDown("w"))
{
normal.SetActive(true);
normal.transform.position = transform.position;
}
else if (Input.GetKeyDown("e"))
{
small.SetActive(true);
small.transform.position = transform.position;
}
}