2016-11-28 109 views
0

我非常接近完成我的比赛,每一个代码我张贴的作品很好,但我希望我的球员死是否与包装盒碰撞(这是敌人)。但是,我试图做一些研究,我似乎无法找到解决方案。我该怎么做呢?下面是播放器(JugadorScript.cs)代码:统一:球员死在物体碰撞

using UnityEngine; 
using System.Collections; 

public class JugadorScript : MonoBehaviour 
{ 

    public float velocidad = -10f; 
    void Start() 
    { 

    } 

    // Update is called once per frame 
    void Update() 
    { 

    } 
    public void moverIzquierda() 
    { 
     transform.Translate(Vector2.right * velocidad * Time.deltaTime); 
     transform.eulerAngles = new Vector2(0, 0); 
    } 
    public void moverDerecha() 
    { 
     transform.Translate(Vector2.right * velocidad * Time.deltaTime); 
     transform.eulerAngles = new Vector2(0, 180); 
    } 
} 

的EnemySpawner.cs代码,它做工精良:

using UnityEngine; 
using System.Collections; 
using System; 

public class EnemySpawner : MonoBehaviour 
{ 

    public GameObject BlockPrefab; 

    float maxSpawnRateInSeconds = 2.5f; 

    void Start() 
    { 
     Invoke("SpawnEnemy", maxSpawnRateInSeconds); 
     InvokeRepeating("IncreaseSpawnRate", 0f, 30f); 
    } 

    // Update is called once per frame 
    void Update() 
    { 

    } 
    void SpawnEnemy() 
    { 
     Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0)); 

     Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1, 1)); 

     GameObject anEnemy = (GameObject)Instantiate(BlockPrefab); 
     anEnemy.transform.position = new Vector2(UnityEngine.Random.Range(min.x, max.x), max.y); 


     ScheduleNextEnemySpawn(); 
    } 

    void ScheduleNextEnemySpawn() 
    { 
     float spawnInNSeconds; 

     if (maxSpawnRateInSeconds > 1f) 
     { 
      spawnInNSeconds = UnityEngine.Random.Range(1f, maxSpawnRateInSeconds); 
     } 
     else 
      spawnInNSeconds = 1f; 

     Invoke("SpawnEnemy", spawnInNSeconds); 
    } 

    void IncreaseSpawnRate() 
    { 
     if (maxSpawnRateInSeconds > 1f) 
      maxSpawnRateInSeconds--; 

     if (maxSpawnRateInSeconds == 1f) 
      CancelInvoke("IncreaseSpawnRate"); 
    } 


} 

而且BlockScript.cs,这是我的敌人脚本:

using UnityEngine; 
using System.Collections; 

public class BlockScript : MonoBehaviour 
{ 

    private GameObject wayPoint; 
    private Vector3 wayPointPos; 
    private Rigidbody2D rigidBody2D; 
    public bool inGround = true; 
    private float jumpForce = 400f; 

    private float speed = 6.0f; 
    void Start() 
    { 

     wayPoint = GameObject.Find("wayPoint"); 
    } 

    private void awake() 
    { 
     rigidBody2D = GetComponent<Rigidbody2D>(); 
    } 


    void Update() 
    { 

     if (inGround) 
     { 
      inGround = false; 

      rigidBody2D.AddForce(new Vector2(0f, jumpForce)); 
     } 

     wayPointPos = new Vector3(wayPoint.transform.position.x, transform.position.y, 
      wayPoint.transform.position.z); 

     transform.position = Vector3.MoveTowards(transform.position, 
      wayPointPos, speed * Time.deltaTime); 

     Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0)); 

     if (transform.position.y < min.y) 
     { 
      Destroy(gameObject); 
     } 



    } 


} 
+2

注意MonoBehaviour方法是区分大小写的!例如。 '唤醒()!=唤醒()'。这将为您节省一些头痛。 – Serlite

回答