コード例 #1
0
        public override CollisionPoints TestCollision(
            Transform transform,
            SphereCollider sphere,
            Transform sphereTransform
            )
        {
            CollisionPoints points = sphere.TestCollision(sphereTransform, this, transform);

            Vector2 T = points.A;

            points.A = points.B;
            points.B = T;

            points.normal = -points.normal;
            return(points);
        }
コード例 #2
0
ファイル: PhysicsWorld.cs プロジェクト: RenatoCesarF/Mars
        private void ResolveCollisions()
        {
            List <Collision> colissions = new List <Collision>();

            foreach (Object a in m_objects)
            {
                foreach (Object b in m_objects)
                {
                    if (a == b)
                    {
                        break;
                    }

                    if (a.collider == null || b.collider == null)
                    {
                        continue;
                    }

                    CollisionPoints points = a.collider.TestCollision(
                        a.transform,
                        b.collider,
                        b.transform
                        );

                    if (points.HasCollision)
                    {
                        colissions.Add(new Collision(a, b, points));
                    }
                }
            }

            foreach (Solver solver in m_solvers)
            {
                solver.Solve(colissions);
            }
        }