Beispiel #1
0
    void FixedUpdate()
    {
        if (move == true)
        {
            Vector3 currentVelocity = rigidBody.velocity;

            currentVelocity.x = -transform.right.x * moveSpeed;

            rigidBody.velocity = currentVelocity;

            if (Mathf.Abs(currentVelocity.y) < 0.1f)
            {
                Collider2D groundCollider = Physics2D.OverlapCircle(groundSensor.position, 2.0f, LayerMask.GetMask("Ground"));
                if (groundCollider == null)
                {
                    transform.rotation = transform.rotation * Quaternion.AngleAxis(180.0f, Vector3.up);
                }
            }

            Collider2D wallCollider = Physics2D.OverlapCircle(wallSensor.position, 2.0f, LayerMask.GetMask("Ground"));
            if (wallCollider)
            {
                transform.rotation = transform.rotation * Quaternion.AngleAxis(180.0f, Vector3.up);
            }

            if (damageCollider)
            {
                ContactFilter2D filter = new ContactFilter2D();
                filter.ClearLayerMask();
                filter.SetLayerMask(LayerMask.GetMask("Player"));

                Collider2D[] results = new Collider2D[8];

                int nCollision = Physics2D.OverlapCollider(damageCollider, filter, results);

                if (nCollision > 0)
                {
                    foreach (var collider in results)
                    {
                        if (collider)
                        {
                            Wad wad = collider.GetComponent <Wad>();
                            if (wad)
                            {
                                Vector3 hitDirection = (wad.transform.position - transform.position).normalized;
                                hitDirection.y = 1.0f;

                                wad.DamagePlayer(1);
                            }
                        }
                    }
                }
            }
        }
    }