2011-09-01 29 views
6

Làm cách nào để làm mịn hoạt ảnh trong Scratch? Chủ yếu, tôi muốn nó như vậy mà khi bạn bấm và giữ mũi tên bên phải, nó đi ngay mà không có bất kỳ jittering đáng chú ý. Thêm vào đó, đầu sẽ khiến bạn chờ một giây để lặp lại khi bạn giữ một mũi tên. Làm thế nào tôi có thể làm mịn công cụ này ra?Làm mịn chuyển động sprite ở đầu

Trả lời

2

Với Scratch, bạn có thể chuyển động rất mượt mà bằng cách sử dụng Glide với khoảng cách hoặc khoảng cách dài. Tuy nhiên, bất lợi của phương pháp này là hoạt động Glide phải kết thúc trước khi sprite có thể thực hiện bất kỳ cảm biến nào, chẳng hạn như phát hiện cạnh hoặc xung đột. Điều này thường không mong muốn.

Độ trễ nhỏ mà bạn đang nói khi nhấn phím, thực sự được gắn trực tiếp với tốc độ lặp lại của bàn phím. Khi bạn nhấn một phím trên bàn phím, sự kiện quan trọng đó được gửi đi, nhưng sau đó có một sự chậm trễ nhỏ trước khi lặp lại. Nếu bạn có thể tìm cách thay đổi tốc độ lặp lại của bàn phím hệ thống, điều này sẽ chuyển sang Scratch.

Có giới hạn về mức tối ưu hóa bạn có thể thực hiện trong Scratch. Đó là, sau khi tất cả, một môi trường lập trình rất cơ bản (nhưng rất thú vị), nhập cảnh cấp. :)

2

Bạn có thể làm cho đến khi "mũi tên không ép"

khi mũi tên ép lặp lại di chuyển (hoặc lướt) cho đến khi không chủ arrow ép

sau đó nó sẽ không kiểm tra trọng điểm nhấn trong khoảng thời gian quy định, làm cho di chuyển mượt mà hơn.

3

Tôi biết đó là câu hỏi cũ. Nhưng trong trường hợp ai đó đang tìm kiếm giải pháp, hãy xem dự án cào này: http://scratch.mit.edu/projects/276298/

Chỉ cần thêm vòng lặp vĩnh viễn và bên trong vòng kiểm tra này nếu nhấn phím mũi tên. Nếu nó là - di chuyển. Bằng cách này bạn sẽ không phụ thuộc vào tốc độ lặp lại của bàn phím.

1

Bạn có thể làm điều này:

When flag pressed 
forever 
    if (right arrow pressed?) then 
    change xs by 1 
    xs = xs * 0.8 
    change x by (xs) 

Đó sẽ kiểm tra mọi nếu mũi tên bên phải được nhấn, và nếu có, nó thay đổi biến xs một. Sau đó, nó nhân xs bằng 0,8, do đó giá trị nhìn thấy phân rã.

Sau đó, nó thay đổi x của sprite bằng var xs.

+0

** CẢNH BÁO: Lỗi trong mã! ** Vị trí đặt lại 'xs' ở đâu? Giá trị của 'xs' sẽ rất nhanh chóng chuyển từ' 1' sang '0.8' thành' 0.64' thành '0.512' thành' 0.4096' ... và giả sử nó bắt đầu từ 1! Bởi vì không có 'set [xs v] thành (number)', giá trị sẽ ** không bao giờ reset **! – wizzwizz4

+0

Mã hoạt động. Mọi giá trị của 'xs' sẽ nhỏ hơn theo cấp số nhân khi phím mũi tên bên phải không được nhấn. Vì vậy, 'xs' tiến tới 0 khi không có phím nào được bấm và giá trị 4 (được tính bằng 0,8/(1-0,8)) khi nhấn phím mũi tên phải. –

0

Một cách bạn có thể làm điều đó là sử dụng các biến và khối tùy chỉnh để làm cho các đối số làm mịn chuyển động. Thêm một biến gọi là tốc độ x và sử dụng mãi mãi thay đổi X theo tốc độ X. Tôi không có bất kỳ ảnh chụp nhanh hoặc ví dụ nào, nhưng bạn có thể sử dụng các tập lệnh trong khối tùy chỉnh để lướt qua nó một cách trơn tru.

Các vấn đề liên quan