এক্সবক্স থাম্বস্টিকটি স্প্রিটকে ঘোরানোর জন্য ব্যবহৃত হয়, মূল সূত্র এটি 90 ডিগ্রি বিরতিতে "স্টিক" বা "স্টিকি" বোধ করে! আপনি কিভাবে মসৃণ ঘূর্ণন পেতে?


9

এক্সবক্স নিয়ামক থাম্বস্টিকের উপর ভিত্তি করে আমার স্প্রাইট (উদাহরণস্বরূপ স্পেসশিপ) কোন কোণে মুখোমুখি হতে হবে তা গণনা করতে আমি একটি খুব বেসিক সূত্র ব্যবহার করছি অর্থাৎ আপনি জাহাজটি ঘোরানোর জন্য থাম্বস্টিকটি ব্যবহার করেন।

আমার প্রধান আপডেট পদ্ধতিতে:

shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);

আমার মূল ড্র পদ্ধতিতে:

spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);

আপনি দেখতে পাচ্ছেন এটি বেশ সহজ, আমি থাম্বস্টিক থেকে বর্তমান রেডিয়ানগুলি নিয়ে একটি ফ্লোটে সংরক্ষণ করি shuttleAngleএবং তারপরে এটি শাটল আঁকার জন্য আবর্তন কোণ (রেডিয়ানে) আর্গুমেন্ট হিসাবে ব্যবহার করি।

কোনও কারণে আমি স্প্রিন্টটি ঘোরালে এটি 0, 90, 180 এবং 270 ডিগ্রি কোণে আঠালো অনুভূত হয়। এটি সেই কোণগুলিতে স্থির করতে চায়। এটি আমাকে কোনও মসৃণ এবং প্রাকৃতিক ঘূর্ণন দেয় না যেমন আমি কোনও গেমের মতো অনুভব করি যা একই রকম মেকানিক ব্যবহার করে। PS: আমার এক্সবক্স নিয়ামক ঠিক আছে!


1
আটান 2 কি প্রথমে Y মান এবং তারপরে এক্স মানটি গ্রহণ করে না? msdn.microsoft.com/en-us/library/system.math.atan2.aspx । আপনাকে প্রথমে আপনার x এবং y মানটি অদলবদল করতে হবে। এছাড়াও আপনি কি নিজের মানকে ফাঁকে ফাঁকে ফাঁকে ফেলাতে বিবেচনা করেছেন? টুভ্যালু-কারেন্টভ্যালু / গতি
সিডার

দুঃখিত, আমি বোঝাতে চেয়েছি নতুন শাটলএঙ্গল - ওল্ড শাটলএঙ্গল / গতি।
সিডার

এটি কেবল ভিজ্যুয়াল অরিয়েন্টেশনকেই প্রভাবিত করবে এবং এটি পুরোপুরি নির্ভর করে যে টেক্সচারের জন্য চিত্রটি কীভাবে নির্ভর করবে - আমি দেখতে পাচ্ছি না যে এটি তার সমস্যায় প্রভাবিত হয়েছিল।
জো শানাহান

এটি কি উইন্ডোজ? যদি কনসোল উইন্ডোটি ব্যবহার করার জন্য প্রকল্পটি সেট করে থাকেন (প্রকল্প -> প্রকল্পের বিকল্পগুলি -> অ্যাপ্লিকেশন -> আউটপুট ধরণ) এবং আপনার কোণটি প্রিন্ট করে shuttleAngleদেখুন যে সেই কোণগুলিতে আটকে আছে
জো শানাহান

2
বাহ দুর্দান্ত কাজ সোমারওয়াটস সংরক্ষিত এবং অন্য সবাই, আমি এই সাইটের সাথে সত্যিই মুগ্ধ, প্রতিক্রিয়াটি এত তাড়াতাড়ি! এটি আমার প্রথম পোস্ট তাই কেউ দয়া করে আমাকে বলতে পারেন যারা সাহায্য করেছেন তাদের যথাযথভাবে ক্রেডিট করার জন্য আমার কী করা উচিত?
হিউজ

উত্তর:


18

এটি গেমপ্যাডের ডেডজোন কীভাবে কাজ করে তার কারণ হতে পারে। এটি ডিফল্ট GamePadDeadZone.IndependentAxes, যার অর্থ প্রতিটি অক্ষ পৃথকভাবে ডেড জোনের বিরুদ্ধে পরীক্ষা করা হয়। এটি এনালগ থাম্বস্টিকের প্রতিটি অক্ষকে ইনপুট স্ন্যাপ করতে পারে। পরিবর্তে, ব্যবহার করে দেখুন GamePadDeadZone.Circular:

newGamePadState = GamePad.GetState(playerIndex, GamePadDeadZone.Circular);

এটি উভয় অক্ষের উপর আপনাকে বেশ মসৃণ নিয়ন্ত্রণ দেয়। পরীক্ষা করে দেখুন দুটিই MSDN পৃষ্ঠা এবং শন হারগ্রিভস দ্বারা এই নিবন্ধটি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.