জেসন,
তিনটি অবজেক্ট অ্যাট্রিবিউট থাকার চেয়ে,
- পয়েন্ট (x, y) অবস্থান
- ভেক্টর 2 ডি (x, y) দিক
- ইন্টার স্পিড
দিক এবং গতিটি বেগ বেগের সাথে একত্রিত করা প্রায়শই অনেক সহজ। তারপরে আপনার দুটি মাত্র বৈশিষ্ট্য রয়েছে,
- পয়েন্ট (x, y) অবস্থান
- ভেক্টর 2 ডি (এক্স, ওয়াই) বেগ
অবস্থান আপডেট হচ্ছে
যখন আপনাকে অবজেক্টের অবস্থান আপডেট করতে হবে তখন এটি এতটা সহজ:
position.x += velocity.x * Δt;
position.y += velocity.y * Δt;
যেখানে Δt
বা সময় পার্থক্য - - বা সময় পদক্ষেপ আপনার সময় ব-দ্বীপ নয়।
অবস্থান এবং বেগ আপডেট করা হচ্ছে
ত্বরণ পরিচালনা করার জন্য এটিও খুব সহজ (যেমন মহাকর্ষ থেকে)। আপনার যদি একটি ত্বরণ ভেক্টর থাকে তবে আপনি বেগ এবং অবস্থান একসাথে এটি আপডেট করতে পারেন:
position.x += (velocity.x * Δt) + (0.5 * acceleration.x * Δt * Δt);
position.y += (velocity.y * Δt) + (0.5 * acceleration.y * Δt * Δt);
velocity.x += acceleration.x * Δt;
velocity.y += acceleration.y * Δt;
(এটি মূলত ফিজিক্স 101 এর s = vt + ²at² সূত্র)
গতি প্রয়োগ করা হচ্ছে
আপনি যদি কিছু স্বাভাবিক দিকটিতে প্রদত্ত গতি প্রয়োগ করতে চান তবে আপনি বেগটি এভাবে সেট করতে পারেন:
velocity.x = normalizedDirection.x * speed;
velocity.y = normalizedDirection.y * speed;
একটি গতি ডাইরিং
এবং যদি আপনাকে বিপরীতটি করতে হয় - প্রদত্ত বেগ ভেক্টর থেকে গতি এবং দিকনির্দেশ - আপনি কেবল পাইথাগোরিয়ান উপপাদ্য বা .Length()
পদ্ধতিটি ব্যবহার করতে পারেন :
speed = velocity.Length();
এবং একবার গতিটি জানা গেলে, গতি দ্বারা গতি বিভাজক করে (শূন্য দ্বারা বিভাজন এড়াতে সতর্কতা অবলম্বন করে) স্বাভাবিক দিকটি গণনা করা যেতে পারে:
if (speed != 0) {
normalizedDirection.x = velocity.x / speed;
normalizedDirection.y = velocity.y / speed;
} else {
normalizedDirection.x = 0;
normalizedDirection.y = 0;
}