public override void Move(Ray ray, Transform camera, bool snap = false) { Plane facePlane = new Plane(faceNormal, position); float distance = 0; if (facePlane.Raycast(ray, out distance)) { position = ray.GetPoint(distance); RestrictPosition(); } if (snap) { Vector3 snapPosition; if (SnapPosition(position, out snapPosition)) { float snapDistance = facePlane.GetDistanceToPoint(snapPosition); if (Math.AboutEqualsZero(snapDistance)) { position = snapPosition; } } } base.PositionChanged(); }