旋转一个实例化的对象
本文关键字:实例化 对象 一个 旋转 | 更新日期: 2023-09-27 18:18:29
我在实例化对象方面遇到了一点困难。我需要引擎去做的是刷出三个预制件,然后在特定的时间,翻转它们。然而,我一直无法让它工作。刷出代码工作,但当我尝试添加更多的操作预制,它只是给了我大量的错误。生成脚本在void Start()中,而其他脚本将在void Update()
中。生成脚本:
cardAOne = Instantiate(CardDisplayer.cardList[Shuffle.playerAdeck[0]], new Vector3 (xPosition, yPosition, (zPosition + 3)), Quaternion.Euler(xRotation, yRotation, zRotation)) as GameObject;
cardATwo = Instantiate(CardDisplayer.cardList[Shuffle.playerAdeck[1]], new Vector3 (xPosition, yPosition, (zPosition)), Quaternion.Euler(xRotation, yRotation, zRotation))as GameObject;
cardAThree = Instantiate(CardDisplayer.cardList[Shuffle.playerAdeck[2]], new Vector3 (xPosition, yPosition, (zPosition - 3)), Quaternion.Euler(xRotation, yRotation, zRotation))as GameObject;
cardBOne = Instantiate(CardDisplayer.cardList[Shuffle.playerBdeck[0]], new Vector3 ((0 - xPosition), yPosition, (zPosition + 3)), Quaternion.Euler(xRotation, (0 - yRotation), zRotation))as GameObject;
cardBTwo = Instantiate(CardDisplayer.cardList[Shuffle.playerBdeck[1]], new Vector3 ((0 - xPosition), yPosition, (zPosition)), Quaternion.Euler(xRotation, (0 - yRotation), zRotation))as GameObject;
cardBThree = Instantiate(CardDisplayer.cardList[Shuffle.playerBdeck[2]], new Vector3 ((0 - xPosition), yPosition, (zPosition - 3)), Quaternion.Euler(xRotation, (0 - yRotation), zRotation))as GameObject;
运动脚本:
if (turnA == true) {
cardAOne.transform.localRotation = Quaternion.Euler(0,0,180);
cardATwo.transform.localRotation = Quaternion.Euler(0,0,180);
cardAThree.transform.localRotation = Quaternion.Euler(0,0,180);
}
最可能出现的错误是:
if (turnA == true) {
...
我认为你只是在访问turnA
之前没有初始化它。也许你有一些分支代码,其中并不是每个分支都给该变量赋值。
关于编码风格:
if (turnA)
相当于if (turnA == true)
,但更清晰、更常规。
这个回答有点晚了,不过好吧。不知道真正的问题是什么,但更新unity是有效的。有时使用最新的软件版本会有帮助!
通过阅读注释,您只需要对值进行适当的引用。有几种方法可以做到这一点,静态可能是最快和最简单的。
设置刷出脚本中的牌为public static GameObject cardAOne;
,
然后用SpawnScript.cardAOne.transform.position
从移动脚本中调用它们。
你也可以在你的移动文件的顶部有一个公共的SpawnScript,然后你可以在Unity的检查器中拖放它的实例。