سؤال

أحاول القيام بتناوب كائن لعبة عن طريق تعيين إطارات البداية والنهاية وإطارات X للقيام بالحركة. ثم interpoths start and end end angle لإنجازها.

إنه يعمل بشكل جيد ، لكنني أحاول القيام بأقصر مسار ممكن كخيار (على عكس "القيام بأطول طريق"). في معظم الحالات ، يعمل ، ولكن إذا تجاوز الدوران 360 أو أقل من 0 ، فأنا لا أعرف كيفية اكتشافه وتغيير الأرقام. (على سبيل المثال ، إذا كنت أرغب في اتخاذ أقصر مسار من 270 إلى 90 ، فإن أقصر مسار يتجاوز 360/0 ، لذلك لا يتم استخدامه أبدًا ، لذلك يجب أن يصبح 270 -45 ليحققوا إلى 90). أنا فظيع في التوضيح ولست اللغة الإنجليزية الأصلية لتجميعها ، لذلك سأستخدم رمزًا كاذبًا لما لدي.

 thing.start_angle = 180
 thing.end_angle = 90
 thing.angle = interpolate(thing.start_angle, thing.end_angle, position)

يعجبني بهذه الطريقة (للتحكم في الوقت التفصيلي على "if angle> max_angle ثم الزاوية - 1") ، لكن لا يمكنني العثور على "قاعدة" لكيفية اكتشاف ما إذا كانت الزاوية ستدور ... كيف يمكنني العثور عليها إذا كان الدوران سوف يقل عن 0 أو أعلى من 360 ، للعمل وفقًا لذلك؟

هل كانت مفيدة؟

المحلول

سوف تلتف الزاوية إذا

Thing.end_angle - thing.start_angle> = 180 أو <-180

(على افتراض نطاق زاوية من 0 إلى 379).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top