旋转实例化对象

时间:2015-10-19 23:51:23

标签: c# unity3d instantiation

我用实例化的对象打了一下墙。我需要引擎做的是产生三个预制件,然后在特定时间将它们翻转过来。但是,我一直无法让它发挥作用。产生的代码可以工作但是当我尝试添加更多来操作预制件时,它只会给我带来大量的错误。 spawn脚本位于void Start()内,而另一个脚本位于void Update()

Spawn脚本:

    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);
    }

2 个答案:

答案 0 :(得分:0)

错误很可能在这里:

if (turnA == true) {
...

我认为您在访问之前没有初始化turnA。也许你有一些分支代码,而不是每个分支都为该变量赋值。

关于编码风格:

if (turnA)相当于if (turnA == true),但更清晰,更传统。

答案 1 :(得分:-1)

通过阅读评论,您只需要正确引用这些值。有几种方法可以做到这一点,静态可能是最快最容易的。

将生成的脚本中的卡片设置为public static GameObject cardAOne;

然后使用SpawnScript.cardAOne.transform.position从移动脚本中调用它们。

您还可以在移动文件的顶部放置一个公共SpawnScript,然后可以从Unity中拖放检查器中的实例。