Tôi đang làm việc trên một trò chơi cuộn dọc đơn giản cho Unity iOS. Trò chơi của tôi đang trải qua sự rùng mình không phù hợp. Tôi đã tìm kiếm trên web rộng rãi tìm kiếm một giải pháp mà không có bất kỳ may mắn nào. Tôi đang sử dụng phiên bản Unity 5.3.4 f1.jitter không phù hợp trong trò chơi iOS
The Game
- Một nhân vật đang rơi xuống. Chúng tôi đang sử dụng bộ điều khiển ký tự thống nhất để di chuyển ký tự trong
Update()
(Time.deltaTime
đang được nhân lên). - Máy ảnh đang theo dõi ký tự trong
LateUpdate()
(sử dụngVector3.Lerp()
để theo dõi). - Vì nhân vật đang di chuyển xuống, các chướng ngại vật dường như đang di chuyển lên trên màn hình.
- Có 1 ánh sáng hướng trong cảnh, thiết lập cho bóng thời gian thực. Chất lượng bóng là bóng cao và cứng.
- Không có vật cứng nhắc nào trong cảnh. Và không có đột biến lớn trong hồ sơ.
- Chúng tôi có hình học rất đơn giản và rất ít cuộc gọi vẽ/đặt cuộc gọi vượt qua (avg. 7 set pass calls).
- Chúng tôi có liên tục 60 khung hình/giây.
- Vì chúng tôi đang chạy trên iOS vSync theo mặc định Bật và không thể tắt.
Vấn đề
- Các yếu tố nền/chướng ngại vật (cây, đá, vv) bắt đầu jittering không có lý do rõ ràng. Hành vi này không nhất quán, đôi khi nó gây hấn và đôi khi nó không xảy ra.
- Ngay cả khi nó không jitter chúng tôi kinh nghiệm nói lắp nhỏ khi người dùng cung cấp cho đầu vào thông qua liên lạc.
Những gì chúng ta đã cố gắng
- Chúng tôi đã thử tất cả các kết hợp của
Update()
,LateUpdate()
,FixedUpdate()
,Time.deltaTime
Time.smoothDeltaTime
, Lerp, giảm hiện trường để một vài hình khối và loại bỏ tất cả các máy va chạm và gây nên. - Chúng tôi đã nghiên cứu các chủ đề sau: Link1, Link2, Link3 và vô số chủ đề khác.
- Ban đầu trò chơi của chúng tôi đang chạy ở tốc độ 30 khung hình/giây mặc định. Nhưng sau một số nghiên cứu, dường như vấn đề của chúng tôi là do sự khác biệt giữa "Tỷ lệ khung hình" và "Tốc độ làm mới màn hình". (để hiểu vấn đề này, hãy xem LINK) sau đây. Vì thiết bị iOS có tốc độ làm tươi 60Hz, chúng tôi đã đặt tốc độ khung hình mục tiêu là 60 và trò chơi của chúng tôi duy trì liên tục 60 khung hình/giây.
- Sau khi đặt tốc độ khung hình mục tiêu thành 60, jitter đã được cải thiện nhưng hiện tại nó không phù hợp.
Tôi hoàn toàn không có ý tưởng. Bất kỳ trợ giúp hoặc con trỏ sẽ được đánh giá cao.
Xin cảm ơn trước.
Có bao nhiêu đèn thời gian thực trong cảnh và bạn có thể vui lòng chia sẻ mã chuyển động của máy ảnh không? –
Chussu anh trai. Chỉ có một hướng ánh sáng. Và tôi đang sử dụng 'Vector3.Lerp()' để di chuyển camera. Tôi đã thử nghiệm chuyển động của camera và nó không phải là vấn đề. Tôi cũng sẽ cập nhật bài đăng và thêm thông tin này vào đó. –
Chào mừng bạn đến với StackOverflow! sẽ hữu ích hơn nếu bạn cập nhật câu hỏi của mình bằng cách thêm ** một chút mã **. Và nếu bạn chưa đọc nó, [Documents] (https://docs.unity3d.com/ScriptReference/Application-targetFrameRate.html) nói điều này: ** Lưu ý rằng việc đặt targetFrameRate không đảm bảo tốc độ khung hình đó. Có thể có biến động do các chi tiết cụ thể của nền tảng hoặc trò chơi có thể không đạt được tốc độ khung hình vì máy tính quá chậm. ** Ngoài ra, bạn có muốn chia sẻ ảnh chụp màn hình của Profiler với _deep profile_ được bật và không giới hạn targetfps. –