Exemple #1
0
        public void CheckCircleCollision(CircleCollider c)
        {
            if (c.position.X - c.radius < x1)
            {
                c.ParentGameObject.pos.X = x1 + c.radius;

                if (c.ParentGameObject.GetComponent <PhysicsBody>() != null)
                {
                    c.PushX();
                }
            }
            else if (c.position.X + c.radius > x2)
            {
                c.ParentGameObject.pos.X = x2 - c.radius;

                if (c.ParentGameObject.GetComponent <PhysicsBody>() != null)
                {
                    c.PushX();
                }
            }

            if (c.position.Y + (c.radius) > y1)
            {
                c.ParentGameObject.pos.Y = y1 - c.radius;

                if (c.ParentGameObject.GetComponent <PhysicsBody>() != null)
                {
                    c.PushY();
                }
            }
            else if (c.position.Y - c.radius < y2)
            {
                c.ParentGameObject.pos.Y = y2 + c.radius;

                if (c.ParentGameObject.GetComponent <PhysicsBody>() != null)
                {
                    c.PushY();
                }
            }
        }
Exemple #2
0
        private void CheckCircleCollision(CircleCollider circleCollider)
        {
            float DistanceBetweenCircles = MathFunction.Distance(position, circleCollider.position);
            float SumOfRadiuses          = radius + circleCollider.radius;

            Vector2f v = new Vector2f((position.X - circleCollider.position.X), (position.Y - circleCollider.position.Y));

            if (DistanceBetweenCircles < SumOfRadiuses)
            {
                //ParentGameObject.GetComponent<CircleRenderer>().circle.FillColor = SFML.Graphics.Color.Blue;
                Vector2f normalized = MathFunction.NormalizeVector(v);

                //ICI CA BUG HOLA OHE

                circleCollider.ParentGameObject.pos = new Vector2f(position.X - (normalized.X * SumOfRadiuses), position.Y - (normalized.Y * SumOfRadiuses));



                float tempVelY = ParentGameObject.GetComponent <PhysicsBody>().velocity.Y;
                ////Cétébien
                //Pousser l'autre

                ParentGameObject.GetComponent <PhysicsBody>().velocity.X += circleCollider.ParentGameObject.GetComponent <PhysicsBody>().velocity.X;

                ParentGameObject.GetComponent <PhysicsBody>().velocity.Y += circleCollider.ParentGameObject.GetComponent <PhysicsBody>().velocity.Y;

                //se pousser soi même

                circleCollider.ParentGameObject.GetComponent <PhysicsBody>().velocity.X -= ParentGameObject.GetComponent <PhysicsBody>().velocity.X;
                circleCollider.ParentGameObject.GetComponent <PhysicsBody>().velocity.Y -= ParentGameObject.GetComponent <PhysicsBody>().velocity.Y;
            }
            else
            {
                // ParentGameObject.GetComponent<CircleRenderer>().circle.FillColor = SFML.Graphics.Color.Black;
            }

            //Console.WriteLine(MathFunction.Distance(position,circleCollider.position));
        }