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