在我的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
答案 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将被设置为生成点的世界位置。