Unity 2D生成变量不会更新

时间:2015-04-05 15:36:29

标签: c# unity3d

在我的2D sidescroller中,我想设置生成点,这样玩家就不必每次都从头开始。

但是变量不会更新,因此玩家可以清楚地激活触发器(使用debug.log进行测试)

这是在我的playerController(PinkPlayerController)

public static float spawnX;
public static float spawnY;

void InstandDeath(){
        if(Health.gameLives > 1){
            Health.gameLives--;
            transform.position = new Vector2(spawnX, spawnY);
            AudioSource.PlayClipAtPoint(deathSound, transform.position, 10.0f);
        }
        else {
            youLose();
        }
    }

这是我的spawner脚本

public float positionX;
public float positionY;

    void OnTriggerEnter2D(Collider2D other){
        //level1
        if (other.tag == "Player" && this.tag == "level1Spawn1"){
            PinkPlayerControler.spawnX = positionX;
            PinkPlayerControler.spawnY = positionY;
        }
        if (other.tag == "Player" && this.tag == "level1Spawn2"){
            PinkPlayerControler.spawnX = positionX;
            PinkPlayerControler.spawnY = positionY;
        }
        if (other.tag == "Player" && this.tag == "level1Spawn3"){
            Debug.Log("Spawner3");
            PinkPlayerControler.spawnX = 222.5f;
            PinkPlayerControler.spawnY = 15.0f;
        }

我只是尝试在Spawner3中对其进行硬编码,但这也不起作用..

我检查了标签,它们都是正确的,没有拼写错误,所以我不知道它为什么不更新这些值。

提前致谢:)

Chrizzly

1 个答案:

答案 0 :(得分:0)

我会做这样的事情:

public class SpawnPoint : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            var playerController = other.GetComponent<PinkPlayerControler>();
            playerControler.spawnPosition = transform.position;
        }
    }
}

要制作生成点,请使用对撞机创建一个游戏对象(设置为触发器)。然后将此脚本添加到对象。然后将场景中的对象定位到您想要的位置。

每次&#34;玩家&#34;标记对象触发此生成点,此玩家的spawnPosition将被设置为生成点的世界位置。