আমি নিম্নলিখিত কোডটি ব্যবহার করে লক্ষ্য দেখার জন্য আমার গেমের চরিত্রটি ঘোরান:
transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f)
নতুন লক্ষ্য দেওয়া হলে startQuaternion হ'ল চরিত্রের বর্তমান ঘূর্ণন।
লুক কিউটারিয়াননটি চরিত্রটির দিকে নজর দেওয়া উচিত এবং এটি এর মতো সেট করা থাকে:
destinationVector = currentWaypoint.transform.position - transform.position;
lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up);
TurnNormalizer কেবলমাত্র Time.deltaTime
বর্ধিত এবং turningSpeed
এটি সম্পাদকে দেওয়া একটি স্থির মান।
সমস্যাটি হ'ল চরিত্রটি বেশিরভাগ সময় যেমন বদলে যায় সেদিকে 180 ডিগ্রি ঘনিয়ে যাওয়ার সময় সমস্যা হয়। তারপরে এটি ঘুরতে ঘুরতে এবং মিরর করে:
এই খারাপ চিত্রায়িত অক্ষরে অক্ষরটি (ডানদিকে) বাম দিকের বৃত্তের দিকে ঘুরতে শুরু করে। কেবল বাম বা ডানদিকে ঘোরার পরিবর্তে এটি "আয়না নৃত্য" শুরু করে:
- এটি নতুন মুখের দিকে ঘোরানো শুরু করে
- তারপরে এটি হঠাৎ একই কোণে অন্যদিকে স্ন্যাপ করে এবং ঘোরাতে থাকে
লক্ষ্যটির দিকে না তাকানো এটি এতক্ষণ এই "মিররিং" করে। এটি কি চতুষ্কোণ, স্লার্পিং / লার্পিং বা অন্য কিছু দিয়ে জিনিস?
এডিআইটি 1: স্পষ্টতই সমস্যাটি ঘোরানো থেকে উদ্ভূত হয় না। আরও সম্ভবত সমস্যাটি হ'ল চরিত্রটি ঘোরার সময় মুখের দিকে এগিয়ে যায়। কোণটি সীমিত করার সময়, মুখোমুখি এবং টার্গেটের মধ্যে, যখন চরিত্রটি চলার অনুমতি দেওয়া হয় তখন হ্রাস হয় এবং অনেক সময় ঝাঁকুনী / মিররিং ঘূর্ণন দূর হয়।
এটি অবশ্যই আরও প্রশ্ন উত্থাপন করে, কেন চরিত্রগুলি ইস্যু ছাড়াই একই সময়ে চলতে এবং ঘোরতে পারে না? আন্দোলনের জন্য ব্যবহৃত কোড:
transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);