Thao tác với Sprite
Sprite là một đối tượng thể hiện hình ảnh lên màn hình, và khi chạy game, nó sẽ là các nhân vật, đối tượng trong game, sprite có thể là đối tượng động (animate-sprite) hoặc đối tượng tĩnh (sprite).
Trong bài này, ta sẽ tìm hiểu cách tạo và vẽ một sprite ra màn hình, làm cho nó chuyển động, kiểm tra va chạm, ... (kiểm tra va chạm là một hiệu ứng vật lý đơn giản nhất mà bất cứ game nào cũng có)
Bạn hãy tạo một project mới với tên là Creatinga2DSprite
Bạn có thể thay đổi màu nền của cửa sổ game bằng cách thay đổi giá trị Color trong dòng lệnh sau tại thủ tục Draw() nằm trong file Gamecs - Draw là thủ tục đảm nhận việc vẽ tất cả mọi thứ lên màn hình.
Visual C# Code:
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
Bây giờ, ta sẽ add vào project một file hình để làm sprite
chú ý đoạn có dòng code
Visual C# Code:
GraphicsDeviceManager graphics; SpriteBatch spriteBatch;
Chúng ta sẽ tiến hành khai báo các đối tượng, giá trị ở đây
Visual C# Code:
Tại thủ tục LoadContent() bạn cho đoạn code này vào
Visual C# Code:
Dòng cuối cùng bạn sẽ thấy tham số của hàm Load là "JumpingJelly", file hình ảnh đưa vào làm sprite có tên là JumpingJelly.png, tương tự khi bạn add file vào và muốn load, chỉ cần ghi phần tên file, không cần đưa vào phần đuôi mở rộng của file.
Tại thủ tục Update() , cho thêm vào 2 dòng
Visual C# Code:
CheckKeyboardInput(); UpdateSprite();
Sau đó viết hàm CheckKeyboardInput như sau :
Visual C# Code:
{ //Khởi tạo bàn phím KeyboardState aKeyboard = Keyboard.GetState(); //Mảng lưu các phím đang được nhấn Keys[] aCurrentKeys = aKeyboard.GetPressedKeys(); { //Nhấn nút qua trái thì sprite chạy qua bên trái { { mHorizontalSpeed *= -1; } mSpriteX += mHorizontalSpeed; } //Nhấn qua phải thì sprite chạy qua phải { { mHorizontalSpeed *= -1; } mSpriteX += mHorizontalSpeed; } //Nhấn nút lên thì sprite chạy lên { { mVerticalSpeed *= -1; } mSpriteY += mVerticalSpeed; } //Nhấn nút xuống thì sprite chạy xuống { { mVerticalSpeed *= -1; } mSpriteY += mVerticalSpeed; } //Thoát game khi nhấn nút ESC { } } }
Hàm này dùng để kiểm tra phím nào được nhấn và nhấn phím gì thì làm cái gì
Sau đó viết hàm UpdateSprite
Visual C# Code:
viết thêm hàm CheckBoundaryCollision() để kiểm tra va chạm
Visual C# Code:
{ //Biến trả về khi có va chạm //Đặt tọa độ cho cạnh màn hình //Kiểm tra xem đụng chưa, nếu đụng rồi thì aCollision set bằng true { mHorizontalSpeed *= -1; mSpriteX = aMaxX; } { mHorizontalSpeed *= -1; mSpriteX = aMinX; } { mVerticalSpeed *= -1; mSpriteY = aMaxY; } { mVerticalSpeed *= -1; mSpriteY = aMinY; } return aCollision; }
Rồi, bây giờ tại thủ tục Draw() bạn đưa đoạn code sau vào dưới cái dòng chú thích //TODO...
Visual C# Code:
những lệnh vẽ bạn phải đặt vào giữa đoạn Begin-End, hình nào được vẽ trước sẽ nằm phía dưới, hình nào vẽ sau sẽ nằm ở trên.
Xong rồi, giờ chạy thử bạn sẽ được như hình :
Nhấn các phím mũi tên thì sprite nó sẽ di chuyển, nhấn ESC sẽ thoát.
Tác giả: huydotnet - caulacbovb