আমি বর্তমানে ওয়েবজিএল ব্যবহার করে ব্রাউজারে একটি 3 ডি প্রথম ব্যক্তি শ্যুটার গেম তৈরি করছি game আমি কীভাবে এই জাতীয় গেমটির জন্য মাউস লুক / ফ্রি লুক বাস্তবায়ন করব ?
আমি বর্তমানে ওয়েবজিএল ব্যবহার করে ব্রাউজারে একটি 3 ডি প্রথম ব্যক্তি শ্যুটার গেম তৈরি করছি game আমি কীভাবে এই জাতীয় গেমটির জন্য মাউস লুক / ফ্রি লুক বাস্তবায়ন করব ?
উত্তর:
মাউসলুক এখন ডাব্লু 3 সি পয়েন্টার লক নির্দিষ্টকরণের মাধ্যমে ক্রোম এবং ফায়ারফক্সে সমর্থিত supported মূলত:
document.onmousemove = function (e) {
document.body.innerHTML = "<div>dx: " +
(e.movementX || e.mozMovementX || e.webkitMovementX || 0);
}
document.body.onclick = document.body.requestPointerLock ||
document.body.mozRequestPointerLock ||
document.body.webkitRequestPointerLock;
একটি ভাল টিউটোরিয়াল নিবন্ধটি হ'ল এইচটিএমএল 5 রকসে পয়েন্টার লক এবং প্রথম ব্যক্তি শ্যুটার নিয়ন্ত্রণ ।
mousemove
ইভেন্টগুলি ক্যাপচার করুন screenX
এবং screenY
ক্যামেরার অবস্থান আপডেট করার জন্য ইভেন্ট অবজেক্টের বৈশিষ্ট্য এবং বৈশিষ্ট্যগুলি ব্যবহার করুন ( চলাচলের পরিমাণ পাওয়ার জন্য ডেল্টাটি সর্বশেষে screenX
এবং screenY
অবস্থানের জন্য ব্যবহার করুন )।
যদি আপনার কাছে কিছুটা দৃশ্যের চিত্র থাকে তবে আপনি নীচের মতো নোড-সেটআপ তৈরি করতে পারেন:
CameraNode (Scene Node)
|
+- YawNode (Scene Node)
|
+- PitchNode (Scene Node)
|
+- Camera (actual Camera Object)
এক্স-এক্সিসে গতিবেগ ইয়াউনোডকে ঘোরায় এবং ওয়াই-অ্যাক্সিসে চলাচল পিচনোডকে ঘোরায়। প্লেয়ারটি সরে গেলে ক্যামেরানোড সরানো হবে।
এটি বেশ সহজ, এবং কেবল দুটি জিনিস লাগে।
ইভেন্ট হ্যান্ডলিং করার জন্য এখানে কিছু নমুনা উত্স কোড। সিস্টেম মডিউল (যা সমস্ত গেম পরিচালনা করে <--> ব্রাউজার ইন্টারঅ্যাকশন) দুটি ভেরিয়েবলের ট্র্যাক রাখে: lastMousePosition
এবং lastMouseDelta
।
মাউসের সাহায্যে ক্যামেরাটি ট্র্যাক করতে আপনার কেবল দরকার lastMouseDelta
যা আপনি ফ্রেম-টু-ফ্রেমে কত ডিগ্রি ঘোরানোর জন্য তা জানতে পারবেন।
var canvas = /* WebGL rendering context */
canvas.onmousedown = function (event) { me.handleMouseDown(event); };
canvas.onmouseup = function (event) { me.handleMouseUp(event); };
canvas.onmousemove = function (event) { me.handleMouseMove(event); };
// snip
engine.SystemModule.prototype.handleMouseMove = function(event) {
this.lastMouseDelta = [event.clientX - this.lastMousePosition[0],
event.clientY - this.lastMousePosition[1]];
this.lastMousePosition = [event.clientX, event.clientY];
};
ক্যামেরা ঘূর্ণন পরিচালনা করার জন্য এখানে কিছু নমুনা কোড's এক্স বা ওয়াই নির্দেশে মাউসটি যে পিক্সেলটি সরিয়ে নিয়েছে তা দিয়ে ক্যামেরাটিকে অনেকগুলি ডিগ্রি ঘোরান।
/**
* degrees/pixel
* @const
*/
var cameraMouseRotation = 0.5;
// Mouse movement for camera angle.
if (sys.isMouseDown()) {
var positionChange = sys.getLastMousePositionDelta();
camera.rotateYDegs(cameraMouseRotation * positionChange[0]);
camera.rotateXDegs(-cameraMouseRotation * positionChange[1]);
}
পরে, আপনি যখন সত্যই আপনার বিশ্বকে রেন্ডার করতে যান, কেবল আপনার ক্যামেরা থেকে মডেল-ভিউ ম্যাট্রিক্স উত্পন্ন করুন। (ক্যামেরার অবস্থান, ইয়া, পিচ এবং ভেক্টরগুলিতে রূপান্তর করা আপনি গ্লুলুকএটে যেতে পারেন)) এবং আপনাকে যেতে হবে ভাল।