2016-07-22 11 views
0

オブジェクトを破壊せずに、オブジェクトに衝撃を与えてゲームを終了することなく、プレイヤーをゲームの開始時にどこに開始したかに戻したい。私のプレイヤーは死ぬ前に3つのheartsを持っています。私のプレイヤーがheart(タグオブジェクトとの衝突後)を失ったとき、私はプレイヤーをゲームの始めにどこから始めたのかを再現したい。Unity2D:オブジェクトとの衝突後にプレイヤーを再獲得する

これは私のプレイヤーの健康コードです:

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

     } 
     } 
    } 

だから、ありがとう一般的には、私のオブジェクトを衝突させた後、ゲームの開始時にプレイヤーを再開させたいのですが、ハートを失った後にゲームを再開したくないので、すべてのh耳が紛失したとき、ゲームが再開されます。

答えて

1

プレイヤーの開始位置を元に戻し、それが損傷を受けたときにリセットする必要があります。私はそれはあなたが私が(移動するためにクリック)をクリックして、私のプレーヤーを動かし参照、

+0

はあなたにその助けをありがとうございましたが、今、私は別の問題を抱えているのに役立ちます願ってい

Vector3 startPosition; void Start() { curHealth = maxHealth; startPosition = transform.position; } public void Damage(int dmg) { curHealth -= dmg; Reset(); } void Reset() { transform.position = startPosition; } 

と:プレイヤーの健康スクリプトでこのような何かを試してみてください私のプレーヤーは、それが最初にあった場所に戻った直後です。私のプレーヤーは、目的地に着くまで移動し続けます。私には分かりませんが、私はそれをもっと明確にしようとします。ありがとうございました:) –

+0

正しい答えを記入してください。あなたが言っていることが分かりました。このためには、プレイヤーの移動スクリプトと一緒に別の質問を投稿する必要がありますので、私は詳細に答えることができます:) –

+0

本当にありがとうございます:http://stackoverflow.com/questions/38533594/unity2d-player-continues 〜へ移動後彼はrespawns :) –

1

ここで私が想像することのできる最も簡単な方法は、空のGameObjectを作成し、プレイヤーがスポーンする場所に配置することです。

player.transform = yourEmptyGameObject.transform; 

プレーヤーに空のゲームオブジェクトの位置を割り当てます:プレイヤーがヒットし、あなたは彼が復活したい取得したときに次に、あなたが復活()メソッドで行うことができます。空のオブジェクトが地面にないことに注意してください。そうしないとプレーヤーが動かなくなります。

関連する問題