Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        currentNumUnits = myAgents.Count;
        UpdateText();
        if (Input.GetKeyDown(KeyCode.N))
        {
            SpawnMultiUnits();
        }
        if (!gameOver)
        {
            spawnRateCounter++;
            if (spawnRateCounter >= spawnRate)
            {
                spawnRateCounter = 0;
                SpawnMultiUnits();
            }
        }

        if (Input.GetKeyDown(KeyCode.Escape))
        {
            Application.LoadLevel(0);
        }

        if (Input.GetMouseButtonDown(0))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                Rigidbody        newRB = hit.collider.gameObject.GetComponent <Rigidbody>();
                RigidbodyControl rBC   = hit.collider.gameObject.GetComponent <RigidbodyControl>();
                if (newRB)
                {
                    newRB.AddForceAtPosition(-hit.normal * 250, hit.point);
                }
                if (rBC)
                {
                    if (connectionGrid.DisableNode(hit.collider.gameObject.transform.position))
                    {
                        rBC.ActivateRigidbody();
                    }
                }
            }
        }
        if (Input.GetMouseButtonDown(1))
        {
            GameObject       newExplosion  = Instantiate(physicsExplosionPrefab, player.transform.position, Quaternion.identity) as GameObject;
            PhysicsExplosion newPExplosion = newExplosion.GetComponent <PhysicsExplosion>();
            newPExplosion.Initialize(connectionGrid);
        }
    }
Beispiel #2
0
    void OnTriggerEnter(Collider other)
    {
        Rigidbody rB       = other.gameObject.GetComponent <Rigidbody>();
        GridAgent newAgent = other.gameObject.GetComponent <GridAgent>();

        if (rB && newAgent)
        {
            rB.AddExplosionForce(explosionForce, transform.position, explosionRadius);
        }
        RigidbodyControl rbControl = other.gameObject.GetComponent <RigidbodyControl>();

        if (rbControl)
        {
            if (mainGrid.DisableNode(rbControl.gameObject.transform.position))
            {
                rbControl.ActivateRigidbody();
            }
        }
    }