コード例 #1
0
ファイル: Planet.cs プロジェクト: mzguimaraes/Orbital
        private void OnDrawGizmos()
        {
            if (PlayerOn)
            {
                Vector2 contactPt = Phys.GetContactPoint(PlayerOn.Collider as CirclePhysicsCollider,
                                                         Collider as CirclePhysicsCollider);

                Gizmos.color = Color.red;

                Gizmos.DrawSphere(contactPt, .5f);

                Gizmos.color = Color.yellow;

                Gizmos.DrawLine(contactPt, contactPt + Collider.GetNormalAtPoint(contactPt));

                Gizmos.DrawLine(contactPt, contactPt + Vector2.Perpendicular(Collider.GetNormalAtPoint(contactPt)));
            }
        }
コード例 #2
0
        public static void Move(PlayerMovement player, Vector2 input, Planet onPlanet)
        {
            //jump
            if (input.x > 0)
            {
                player.transform.Translate(input.x * onPlanet.Collider.GetNormalAtPoint(player.Position));
            }

            if (onPlanet.Collider is CirclePhysicsCollider)
            {
                CirclePhysicsCollider circleCollider = onPlanet.Collider as CirclePhysicsCollider;

                Vector2 contactPt = Phys.GetContactPoint(circleCollider, player.Collider as CirclePhysicsCollider);

                Vector2 perp = Vector2.Perpendicular(circleCollider.GetNormalAtPoint(contactPt));
                Debug.Log(perp);

                player.transform.Translate((input.y * perp));
            }
            else
            {
                throw new System.NotImplementedException();
            }
        }