Beispiel #1
0
    void Match(CC_Robot otherBot)
    {
        EnterMatchedState();
        otherBot.EnterMatchedState();

        CC_GameplayManager.instance.ScoreMatch(this, otherBot);
    }
Beispiel #2
0
    private void OnCollisionEnter(Collision col)
    {
        //if(state == State.KNOCK_BACK)
        //{
        //    ContactPoint cp = col.GetContact(0);

        //    if (cp.otherCollider.gameObject.layer == LayerMask.NameToLayer("Default"))
        //    {
        //        Debug.Log("Bounce off wall: " + cp.normal + " New Velocity is: " + Vector3.Reflect(myRigidbody.velocity, cp.normal));
        //        myRigidbody.velocity = Vector3.Reflect(myRigidbody.velocity, cp.normal);
        //    }
        //}

        ContactPoint cp = col.GetContact(0);

        CC_Robot otherBot = cp.otherCollider.gameObject.GetComponent <CC_Robot>();

        if (otherBot != null && otherBot.type == type)
        {
            if (otherBot.state != State.MATCHED)
            {
                Match(otherBot);
            }
        }
    }
    public void SetAimVector(Vector3 aim)
    {
        aimVector = aim;

        transform.rotation = Quaternion.LookRotation(aim, Vector3.up);

        RaycastHit hit;

        if (Physics.Raycast(transform.position, transform.forward, out hit, 100.0f, laserMask))
        {
            aimLaser[0].transform.localScale = new Vector3(aimLaser[0].transform.localScale.x, aimLaser[0].transform.localScale.y, hit.distance);

            if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Default"))
            {
                Vector3 reflectVector = Vector3.Reflect(aimVector, hit.normal);
                //Debug.Log("Hit normal: " + hit.normal);

                aimLaser[1].transform.rotation = Quaternion.LookRotation(reflectVector, Vector3.up);

                aimLaser[1].SetActive(true);

                aimLaser[1].transform.position = hit.point;

                if (Physics.Raycast(aimLaser[1].transform.position + reflectVector * .1f, aimLaser[1].transform.forward, out hit, 100.0f, laserMask))
                {
                    aimLaser[1].transform.localScale = new Vector3(aimLaser[1].transform.localScale.x, aimLaser[1].transform.localScale.y, hit.distance);

                    if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Robot"))
                    {
                        currentTarget = hit.collider.GetComponent <CC_Robot>();

                        targetDirection = reflectVector;
                    }
                    else
                    {
                        currentTarget = null;
                    }
                }
                else
                {
                    aimLaser[1].SetActive(false);
                }
            }
            else if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Robot"))
            {
                currentTarget = hit.collider.GetComponent <CC_Robot>();

                targetDirection = aimVector;

                aimLaser[1].SetActive(false);
            }
        }
    }
    void SpawnRobot()
    {
        spawnTimer = currentSpawnDelay;

        Vector3 spawnPosition = spawnLine.transform.position + Random.Range(-7.0f, 7.0f) * Vector3.right;

        GameObject r = GameObject.Instantiate(robotPrefabs[Random.Range(0, robotPrefabs.Length)].gameObject, transform);

        CC_Robot rComp = r.GetComponent <CC_Robot>();

        robots.Add(rComp);

        rComp.Spawn(spawnPosition);
    }
 public void ScoreMatch(CC_Robot a, CC_Robot b)
 {
 }
    public void KillRobot(CC_Robot r)
    {
        robots.Remove(r);

        GameObject.Destroy(r.gameObject);
    }