在没有实例化的情况下在另一个对象旁边生成一个对象

时间:2018-10-13 18:36:56

标签: unity3d spawn

我有一个始终在同一位置的对象,我想在另一个可移动角色旁边生成它。或更具体地说,我有两个,因为是基于回合的3D游戏,因此我想在角色旁边生成该对象,并且在回合通过时,在另一个不同角色旁边生成同一对象。该对象在回合开始时将始终显示在移动对象旁边。现在,我在对象中包含以下脚本:

format(seq.Date(as.Date("2001-10-31"), as.Date("2001-12-31"), by = 1),
         format = "%m-%d")
# [1] "10-31" "11-01" "11-02" "11-03" "11-04" "11-05" "11-06" "11-07" "11-08" "11-09" "11-10"
# [12] "11-11" "11-12" "11-13" "11-14" "11-15" "11-16" "11-17" "11-18" "11-19" "11-20" "11-21"
# [23] "11-22" "11-23" "11-24" "11-25" "11-26" "11-27" "11-28" "11-29" "11-30" "12-01" "12-02"
# [34] "12-03" "12-04" "12-05" "12-06" "12-07" "12-08" "12-09" "12-10" "12-11" "12-12" "12-13"
# [45] "12-14" "12-15" "12-16" "12-17" "12-18" "12-19" "12-20" "12-21" "12-22" "12-23" "12-24"
# [56] "12-25" "12-26" "12-27" "12-28" "12-29" "12-30" "12-31"

问题是我不想使用实例化方法,只是每转一圈都移动同一对象,这就是为什么我试图从Player角色更改'InitPosition'的原因,但是它不起作用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

public Transform pObject;//(player object)
public Transform eObject;//(enemy object)

void Awake(){ 在这里,您需要为两个对象都分配初始位置,这两个对象都是您想在接下来生成它们的两个项目。我不确定您如何分配这个,但是由于 我使用公共变量,您可以将两个对象都拖到检查器中的此脚本中,但是如果您使用的是标签,则可以在它们中进行抓取:

void Awake(){
}

然后您可以执行以下操作:

 private IEnumerator WhoTurn()
    {
        if (whosTurn == 1)
        {
            GameController.MovePlayer(1);
            CameraController.isTurnPlayer1 = true;
            CameraController.isTurnPlayer2 = false;
           transform.position=pObject.position;
    }
    else if (whosTurn == -1)
    {
        GameController.MovePlayer(2);
        CameraController.isTurnPlayer2 = true;
        CameraController.isTurnPlayer1 = false;
        transform.position=eObject.position;
    }
    whosTurn = whosTurn * -1;
    yield return 0;

,因此您将需要在两个位置使用一个变量,然后即可来回切换。该脚本将对您要移动的对象起作用。

或者,我知道您不想使用实例化,但是您可以在玩家开始回合时实例化一个项目,然后在结束回合时实例化Destroy(gameObject)