Exemple #1
0
        private void ProcessCollision(Collider2D col)
        {
            RexObject rexObject = col.GetComponent <RexObject>();

            if (rexObject != null)
            {
                RexActor actor = col.GetComponent <RexActor>();
                if (actor != null && actor.isDead)
                {
                    return;
                }

                if (rexObject.willDespawnOnSceneExit || isBottomlessPit)
                {
                    float buffer        = 0.5f * GlobalValues.tileSize;
                    float warningBuffer = 0.15f * GlobalValues.tileSize;
                    if (edge == Edge.Right)
                    {
                        if (rexObject.transform.position.x > transform.position.x + buffer)
                        {
                            rexObject.Clear();
                        }
                        else if (rexObject.transform.position.x > transform.position.x + warningBuffer)
                        {
                            rexObject.OnSceneBoundaryCollisionInsideBuffer();
                        }
                    }
                    else if (edge == Edge.Left)
                    {
                        if (rexObject.transform.position.x < transform.position.x - buffer)
                        {
                            rexObject.Clear();
                        }
                        else if (rexObject.transform.position.x < transform.position.x - warningBuffer)
                        {
                            rexObject.OnSceneBoundaryCollisionInsideBuffer();
                        }
                    }
                    else if (edge == Edge.Top)
                    {
                        if (rexObject.transform.position.y > transform.position.y + buffer)
                        {
                            rexObject.Clear();
                        }
                        else if (rexObject.transform.position.y > transform.position.y + warningBuffer)
                        {
                            rexObject.OnSceneBoundaryCollisionInsideBuffer();
                        }
                    }
                    else if (edge == Edge.Bottom)
                    {
                        if (rexObject.transform.position.y < transform.position.y - buffer)
                        {
                            rexObject.Clear();
                        }
                        else if (rexObject.transform.position.y < transform.position.y - warningBuffer)
                        {
                            rexObject.OnSceneBoundaryCollisionInsideBuffer();
                        }
                    }
                }
            }
        }