আমি সি # ব্যবহার করছি এবং হার্ডওয়্যার মাউসের অবস্থান পাওয়ার চেষ্টা করছি। আমি প্রথমে চেষ্টা করেছিলাম সাধারণ এক্সএনএ কার্যকারিতা যা ব্যবহার করা সহজ
Vector2 position = new Vector2(Mouse.GetState().X, Mouse.GetState().Y);
এর পরে আমি মাউসের অঙ্কনও করি এবং উইন্ডোজ হার্ডওয়্যার মাউসের সাথে তুলনা করি, এক্সএনএ প্রদত্ত সমন্বয়যুক্ত এই নতুন মাউসটি "স্ল্যাকিং অফ"। তার মানে আমার, এটি কয়েকটি ফ্রেমের পিছনে রয়েছে। উদাহরণস্বরূপ, যদি গেমটি 600 fps এ চলেছে তবে অভিশাপটি এটি প্রতিক্রিয়াশীল, তবে 60 fps এ সফ্টওয়্যার মাউসের বিলম্বটি আর গ্রহণযোগ্য নয়। অতএব আমি যা মনে করেছি এটি একটি হার্ডওয়্যার মাউস হিসাবে ব্যবহার করার চেষ্টা করেছি,
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetCursorPos(out POINT lpPoint);
তবে ফলাফলটি হুবহু একই ছিল। আমি উইন্ডোজ ফর্ম কার্সার পাওয়ার চেষ্টাও করেছি, এবং এটিও একটি শেষ পরিণতি ছিল - কাজ করেছে, তবে একই বিলম্বের সাথে। এক্সএনএ কার্যকারিতা সহ চারপাশে জগাখিচুড়ি:
GraphicsDeviceManager.SynchronizeWithVerticalRetrace = true/false
Game.IsFixedTimeStep = true/fale
কিছুটা সুস্পষ্ট কারণে বিলম্বের সময় পরিবর্তন করেছিল, তবে নীচের লাইনটি নির্বিশেষে এটি ডিফল্ট উইন্ডোজ মাউসের পিছনে ছিল। আমি কয়েকটি গেমসে দেখেছি, তারা হার্ডওয়্যার অ্যাকসিলিটেড মাউসের জন্য বিকল্প সরবরাহ করে এবং অন্যদের মধ্যে (আমার মনে হয়) এটি ইতিমধ্যে ডিফল্ট by যে কেউ কীভাবে এটি অর্জন করতে পারে তাতে কিছু নেতৃত্ব দিতে পারে।
Mouse.GetState()
ভাঙ্গা নেই এবং যতক্ষণ IsFixedTimeStep == true
না লোকেরা সরাসরি দৃশ্যমান উইন্ডো মাউসের সাথে তুলনা না করে দেরি করতে সক্ষম হয় না। তবে নিম্ন ফ্রেমরেটে ইসফিক্সডটাইমস্টেপটিকে মিথ্যা হিসাবে সেট করা প্রত্যেকের কাছে দৃশ্যমান হয়। সরাসরি ইনপুট সম্পর্কে আমি বিবেচনা করেছি যে একটি ইতিবাচকতা (শেষ অবলম্বন)।
Mouse.GetState()
ভাঙা ভাবি না । আপনি কি নিশ্চিত যে আপনি এটি আঁকছেন ঠিক একই ফ্রেমে মাউস পজিশন পাচ্ছেন? এছাড়াও মনে রাখবেন যে উইন্ডোজ কার্সারে ত্বরণ / পতন সক্ষম হয়েছে, সুতরাং এটি আরও প্রতিক্রিয়াশীল বোধ করে । আপনি যদি হার্ডওয়্যারটির কাছাকাছি যেতে চান তবে আপনার ডাইরেক্টইনপুটটি আঘাত করা উচিত, যা আপনাকে পরম মাউসের অবস্থানের পরিবর্তে চলাচল ডেল্টাস দেয়। তবে আমি বিশ্বাস করি যেMouse.GetState()
এটি এখনও এক্সএনএ-তে করার সঠিক উপায়।