2017-02-05 9 views
0
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Gun : MonoBehaviour { 
    public int Player_Health = 100; 
    public GameObject Player; 
    public Rigidbody Bullet; 
    public Transform Guun; 
    public bool Player_Dead = false; 



    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 
     if (Input.GetKeyDown(KeyCode.Space)) 
     { 
      Rigidbody rocketInstance; 
      rocketInstance = Instantiate(Bullet, Guun.position, Guun.rotation) as Rigidbody; 
      rocketInstance.AddForce(Guun.forward * 5000); 
     } 

     if(Player_Health == 0) 
     { 
      Player_Dead = true; 
     } 

     if(Player_Dead == true) 
     { 
      Destroy(Player); 
     } 
    } 

    private void OnCollisionEnter(Collision col) 
    { 
     if(col.gameObject.name == "Player") 
     { 
      Player_Health = Player_Health - 20; 
      Debug.Log(Player_Health); 
     } 
    } 
} 

1.So, когда я создаю экземпляр, нажимая пробел, он сначала запускает 1, затем 2, затем 4, затем 8 и т. Д. - почему он не просто создает 1 каждое нажатие. Я пытаюсь сделать ружье здесь и, очевидно, нужно, чтобы он стрелял только одной пулей за раз, потому что на данный момент он стреляет несколько. Как я уже объяснял сначала, он запускает одну пулю, затем в следующий раз, когда я стреляю, она удваивает ее и так далее.Как использовать экземпляр в C#?

+1

Пожалуйста, разместите ваши два вопроса в виде отдельных вопросов (ваш вопрос слишком широк из-за этого). – cybermonkey

+0

@cybermonkey они очень простые вопросы, пожалуйста, хотя бы ответьте на один – Goady

+0

Ваш второй вопрос не имеет смысла. Пожалуйста, объясните это или задайте его как вопрос enw. – Programmer

ответ

2

1.So, когда я экземпляр, нажав пространство он сначала инициализирует 1, а затем 2, затем 4, затем 8 и так далее - почему не делает это просто экземпляр 1 каждый пресса.

Если поведение заключается в том, что каждый сборщик дублирует каждый раз при нажатии клавиши, это просто означает, что скрипт также прикреплен к сборнику или нескольким GameObjects. Я вижу подобные проблемы каждый раз.

Удалите скрипт из сборных блоков, если он прикреплен к любому сборнику. Удалите его из каждого GameObject в сцене, затем присоедините его к одному GameObject.

Выберите сценарий, перейдите к активов ->Найти Ссылки на сцене. Он покажет вам каждый GameObject, к которому прикреплен этот скрипт. Удалите его из всех, кроме одного.