วิกิ
ฟิสิกส์เกม Chrome Dino
วิศวกรรมความรู้สึกการกระโดดของ T-Rex

ฟิสิกส์ Chrome Dino ปัจจุบันอยู่ในโมดูล TypeScript ของ Chromium การกระโดดเริ่มต้นด้วยความเร็วขึ้นเริ่มต้นที่ปรับตามความเร็วปัจจุบัน และแรงโน้มถ่วงจะเปลี่ยนความเร็วนั้นในการอัปเดตแต่ละครั้ง การปล่อยปุ่มกระโดดหลังจากความสูงขั้นต่ำที่กำหนดไว้จะทำให้ endJump จำกัดความเร็วขึ้นให้เท่ากับความเร็วตก ทำให้เกิดส่วนโค้งที่สั้นลง การกดลูกศรลงกลางอากาศจะตั้งค่าสถานะการตกเร็วและคูณการกระจัดในแนวตั้งด้วยสัมประสิทธิ์ที่กำหนดไว้ การตรวจจับการชนใช้กล่องที่จัดแนวแกนหลายกล่องสำหรับ T-Rex ที่กำลังวิ่งและสิ่งกีดขวางแต่ละชิ้น ซึ่งประมาณรูปร่างของสไปรต์ได้ใกล้เคียงกว่าสี่เหลี่ยมผืนผ้าขนาดใหญ่หนึ่งอัน นี่คือเรขาคณิตการชนแบบหลายกล่องทั่วไป ไม่ใช่ coyote time The Jumping Dino ใช้ฟิสิกส์มือถือของตัวเองและไม่ควรสันนิษฐานว่าใช้ค่าคงที่ของ Chromium ร่วมกัน
ฟิสิกส์การกระโดดโดยละเอียด
การกำหนดค่าการกระโดดปกติใช้แรงโน้มถ่วง 0.6, ค่าความสูงการกระโดดขั้นต่ำและสูงสุด 30, ความเร็วการกระโดดเริ่มต้น -10, และความเร็วตก -5 startJump ลบ speed / 10 ออกจากความเร็วเริ่มต้น การปล่อยปุ่มกระโดดจะเรียก endJump; หลังจากถึงความสูงขั้นต่ำแล้ว เมธอดนั้นจะจำกัดความเร็วที่ยังคงเพิ่มขึ้นเป็น -5 เพื่อให้การลงเริ่มต้นเร็วขึ้น การตกเร็วจะตั้งค่าความเร็วการกระโดดเป็น 1 และคูณการกระจัดในแนวตั้งด้วยสัมประสิทธิ์การตกเร็วที่ 3 ซอร์สโค้ดไม่ได้อ้างว่ามีการลดระยะเวลาในอากาศเป็นเปอร์เซ็นต์ที่แน่นอน
การตรวจจับการชนและการออกแบบ Hitbox
T-Rex ที่กำลังวิ่งใช้กล่องชนหกกล่อง; การก้มใช้กล่องที่กว้างกว่าหนึ่งกล่อง คำจำกัดความของกระบองเพชรเล็ก, กระบองเพชรใหญ่, และเทอโรแดกทิลแต่ละอันมีกล่องของตัวเอง โค้ดการชนจะชดเชยกล่องเหล่านี้ด้วยตำแหน่งสไปรต์ปัจจุบันและตรวจสอบการทับซ้อน กล่องเองไม่ได้ถูกคูณด้วยค่าความเร็วของเกม การเคลื่อนที่ใช้เวลาเฟรมที่ผ่านไป และโมดูลค่าคงที่กำหนดการอ้างอิง 60 FPS สำหรับการคำนวณแอนิเมชันและการเคลื่อนที่
ความก้าวหน้าของความเร็วและผลกระทบต่อความรู้สึก
โหมดปกติเริ่มต้นที่ความเร็ว 6, เพิ่ม 0.001 ต่อการอัปเดตที่ใช้งานอยู่, และสูงสุดที่ 13 คะแนนจะถูกปัดเศษจากระยะทางที่คูณด้วย 0.025 ภายใต้เวลา 60 FPS ปกติ ค่าคงที่เหล่านั้นจะถึงขีดจำกัดที่ประมาณ 1,660 คะแนน ไม่ใช่ 700 การเคลื่อนที่ของสิ่งกีดขวางที่เร็วขึ้นจะลดเวลาหน้าจอที่มีอยู่ ในขณะที่ startJump ยังทำให้ความเร็วในการปล่อยตัวเป็นลบมากขึ้นเล็กน้อยเมื่อความเร็วเพิ่มขึ้น หน้าต่างปฏิกิริยาที่แน่นอนขึ้นอยู่กับความกว้างของ viewport, ความกว้างของสิ่งกีดขวาง, ช่องว่างสุ่ม, ความเร็วปัจจุบัน, และเวลาอินพุต ดังนั้นซอร์สโค้ดจึงไม่รองรับตัวเลขมิลลิวินาทีสากลหนึ่งเดียว

