2016-12-16 3 views
1

私たちはクラスの割り当てを持っており、UnityチュートリアルからSurvival Shooterプロジェクトをやっています。私は、あなたがそれらを拾うときにあなたにスピードを与える健康パックと小さな箱を作ることに成功しましたが、今は敵が死ぬときにパワーアップが少し落ちることを望みます。誰かが私を助けることができますか?誰かが私を助けることができ、私は彼らが死ぬとき、ゲームオブジェクトの卵を作るためにどのようにあまりにもわからないんだけどパワーアップを持つ方法は、敵を殺すときに産卵するわずかなチャンスがありますか?

public float percentDrop = 50f; 
public GameObject HealthPack; 
void Awake() 
{ 
    HealthPack = GetComponent<GameObject>(); 
} 
public void TakeDamage (int amount, Vector3 hitPoint) { if(isDead) return; 

    enemyAudio.Play(); 
    currentHealth -= amount; 

    hitParticles.transform.position = hitPoint; 
    hitParticles.Play(); 
    if(currentHealth <= 0) 
    { 
     Death(); 
    } 
} 
void Death() 
{ 
    isDead = true; 
    capsuleCollider.isTrigger = true; 
    anim.SetTrigger ("Dead"); 
    enemyAudio.clip = deathClip; 
    enemyAudio.Play(); 

    var randChance = Random.Range(0f, 100f); 
    if (randChance < percentDrop) 
    { 
     //GameObject.Healthpack.setActice(true);   
    } 
} 

:私は本当に全体のコードを求めていないよ、私は以下のダウンいくつかありますか?

+0

Unityの 'Instantiate'関数についてのチュートリアルが必要です。残念ながら、特定のチュートリアルを推薦することはStack Overflowの範囲外ですが、私はそれらのトンがあると約束します。 – rutter

答えて

0
  1. エディタから「ヘルスパック」プレハブを作成します。プレハブに関する詳細情報が必要な場合は、情報がWeb上にあります。プレハブを作成するには、GameObjectをシーンからプロジェクトにドラッグアンドドロップするだけです。そのシーンの名前は青くなります。シーンから削除することはできますが、それはプロジェクトに残ります。
  2. プロジェクトからプレハブをエナメルのインスペクタのHealthPackスロットにドラッグします。 ennemyはプレハブへの参照を持つようになりました。
  3. 新しいヘルスパックを作成する場合は、rutterで指定されたObject.Instantiate静的メソッドを使用できます。 Here is the official doc。あなたの新しいヘルスパックをインスタンス化するとき、それはVector3D positionをパラメータとして取るメソッドのオーバーロードの1つを使用したいという意味で、それは恐らくtransform.positionであると思われます。これらのメソッドもクォータニオンを求めるので、Quaternion.identity定数を渡してください。

これはあなたのコードがどのように見えるかです:HealthPack = GetComponent<GameObject>();

if (randChance < percentDrop) 
{ 
    Object.Instantiate(HealthPack, transform.position, Quaternion.identity);   
} 

もう一つの問題は、私のコメントで述べたように、アウェイク機能です。 HealthPackプレハブは、インスペクタからエナメルに割り当てる必要があります。 Awake関数のその行は、あなたのennemyのGameObjectコンポーネントをHealthPackに割り当てます。これは現在のコンテキストでは望ましくありません。

こちらがお役に立てば幸いです。

+1

これは私が必要としていたものです!私は健康パックのプレハブを持っていましたが、setActive関数について学び始めましたが、このシナリオでどのように動作させるかを理解できませんでした。インスタンス化関数を必ずチェックしてください! –

+0

ベクトル3のパラメータにTransform.positionを配置しようとすると、Unityはそのように見えません。 –

+0

'transform.position'が必要だったときに' Transform.position'を書きました。私の悪い。 – LeBodro

関連する問題