Unity2D:与对象碰撞后重新生成的玩家

时间:2016-07-22 14:21:34

标签: unity3d

我希望将我的玩家重新生成回到游戏开始时的位置,而不会破坏任何物体,并在撞击物体后结束游戏。我的球员在他去世前有三hearts。当我的玩家失去heart(与标签对象发生碰撞后)时,我想将我的玩家重新生成回到他在游戏开始时开始的位置。

这是我的播放器的健康代码:

public class PlayerHealth : MonoBehaviour {

//Stats
public int curHealth;
public int maxHealth = 3;

void Start ()
{
    curHealth = maxHealth;

}


void Update ()
{

    if (curHealth > maxHealth) {
        curHealth = maxHealth;
    }
    if (curHealth <= 0) {

        Die ();
    }
}

void Die ()
{
    //Restart
    Application.LoadLevel (Application.loadedLevel);


}


public void Damage(int dmg)
{
    curHealth -= dmg;

   }
 }

这个脚本在我的对象上用来伤害他(带走他的心脏)

public class Damage : MonoBehaviour {

private PlayerHealth player;


void Start ()
{

    player = GameObject.FindGameObjectWithTag ("Player").GetComponent<PlayerHealth> ();
}

void OnTriggerEnter2D (Collider2D other)
{
    if (other.CompareTag ("Player")) 
    {

        player.Damage(1);

         }
      }
  }

谢谢你,所以一般来说我想把我的球员重新打造到他在与我的物体碰撞后在比赛开始时开始的地方,我不希望比赛在失去一颗心之后重新开始我想继续直到所有的心都迷失了,那就是比赛重新开始的时候。

2 个答案:

答案 0 :(得分:1)

目前我能想象的最简单方法是创建一个空的GameObject并将其放置在您希望玩家产生的位置。然后,当玩家被击中并且你想要他重生时,你可以用respawn()方法做:

player.transform = yourEmptyGameObject.transform;

这会将空的gameObject位置分配给您的玩家。请注意,空物体不在地面,否则您的播放器可能会卡住。

答案 1 :(得分:1)

你需要在开始时恢复玩家的起始位置,然后在受到伤害时重置它。在您的播放器健康脚本中尝试这样的事情:

Vector3 startPosition;

void Start ()
{
    curHealth = maxHealth;
    startPosition = transform.position;
}

public void Damage(int dmg)
{
    curHealth -= dmg;
    Reset();
}


void Reset()
{
    transform.position = startPosition;
}

我希望它有所帮助