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(); } } }
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)); }