Exemple #1
0
    void OnCollisionEnter2D(Collision2D coll)
    {
        //Debug.Log ("We have a collision here!");
        if (coll.gameObject)
        {
            if (coll.gameObject.layer == 10)               // Player's layer
            {
                gameObject.AddComponent <AudioSource>().PlayOneShot(rozszczepienieSound);
                gameObject.layer = 11;
                int degree_multiplier = 1;
                if (!BulletBody.flipX)
                {
                    degree_multiplier = 3;
                }
                BulletBody.flipX = true;
                GameObject Temporary_Bullet_Handler;
                Temporary_Bullet_Handler = Instantiate(gameObject, GetComponent <Collider2D> ().transform.position, transform.rotation) as GameObject;
                //Sometimes bullets may appear rotated incorrectly due to the way its pivot was set from the original modeling package.
                //This is EASILY corrected here, you might have to rotate it from a different axis and or angle based on your particular mesh.
                Temporary_Bullet_Handler.layer = 11;
                //Retrieve the Rigidbody component from the instantiated Bullet and control it.
                Rigidbody2D Temporary_RigidBody;
                Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent <Rigidbody2D> ();
                Destroy(Temporary_Bullet_Handler, 10.0f);                  // destruct after 10 seconds
                Temporary_RigidBody.AddForce(Quaternion.Euler(0, 0, -45 * degree_multiplier) * -gameObject.transform.right * GlobalVariable.Instance.BulletForwardForce);
                GetComponent <Rigidbody2D> ().velocity = new Vector2(0, 0);
                GetComponent <Rigidbody2D> ().AddForce(Quaternion.Euler(0, 0, 45 * degree_multiplier) * -gameObject.transform.right * GlobalVariable.Instance.BulletForwardForce);
                Destroy(gameObject, 10.0f);
                Vector3 rot = new Vector3(0, 0, 1);
                transform.RotateAround(rot, Mathf.Deg2Rad * 45 * degree_multiplier);
                Temporary_Bullet_Handler.transform.RotateAround(rot, Mathf.Deg2Rad * -45 * degree_multiplier);
                GlobalVariable.Instance.playerHealth -= 5;

                Temporary_Bullet_Handler.SendMessage("SetShooter", Shooter);
            }
            else if (coll.gameObject.layer == 9)                 // enemy
            {
                if (coll.gameObject != Shooter)
                {
                    coll.gameObject.SendMessage("OnDamage", gameObject);
                }
                Destroy(gameObject);                      // bullet does as well
            }
            else if (coll.gameObject.layer == 13)         // platform
            {
                Destroy(gameObject);
            }
            else if (coll.gameObject.layer == 14 && gameObject.layer == 11)                 // Ziomek
            {
                coll.gameObject.SendMessage("OnDamage");
                Destroy(gameObject);
            }
        }
    }
Exemple #2
0
    void Shoot()
    {
        gameObject.AddComponent <AudioSource>().PlayOneShot(ShootSound);
        GameObject Temporary_Bullet_Handler;
        Vector2    Direction = Player.transform.position - BulletSpawningPoint.transform.position;

        Direction.Normalize();
        Temporary_Bullet_Handler = Instantiate(Bullet, GetComponent <Collider2D>().transform.position, transform.rotation) as GameObject;
        //Sometimes bullets may appear rotated incorrectly due to the way its pivot was set from the original modeling package.
        //This is EASILY corrected here, you might have to rotate it from a different axis and or angle based on your particular mesh.

        Temporary_Bullet_Handler.transform.LookAt(Player.transform);
        Temporary_Bullet_Handler.transform.Rotate(Vector3.up * 90);
        //Retrieve the Rigidbody component from the instantiated Bullet and control it.
        Rigidbody2D Temporary_RigidBody;

        Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent <Rigidbody2D>();
        Temporary_RigidBody.AddForce(Direction * GlobalVariable.Instance.BulletForwardForce);
        Destroy(Temporary_Bullet_Handler, 10.0f);          // destruct after 10 seconds

        Temporary_Bullet_Handler.SendMessage("SetShooter", gameObject);
    }