我目前正在做一个小的2D Java游戏,我刚刚完成了修复所有的bug/错误等等,这些都是我从CodeNMore的YouTube教程中学到的。
在我的游戏中,他的一切都是最新的,我一直在努力扩展我的游戏。所以,我为一个面向不同方向的角色创建了一个精灵。不幸的是,我一点也不知道该如何展示这些图像。
为了进一步解释,CodeNMore使用了以下代码行:来自SpriteSheet.java
public BufferedImage crop(int col, int row, int w, int h){
return sheet.getSubimage(col * 16, row * 16, w, h);
}我现在面临的问题是,我不知道如何在spritesheet上动画/更改字符sprite,只要它们向某个方向移动。
也就是说,如果玩家是向右的,我需要图像(默认情况下,在0列,0行)更改为第1列,第3行。
一旦完成,我就得弄清楚如何给玩家动画。(希望我能自己想清楚)。
您需要看到的所有内容都可以从这个媒体火下载:
20.zip
这正是CodeNMore一直在处理的文件,只是在/res中使用了我的spritesheet。
发布于 2014-08-06 03:34:59
下面是我使用的动画类
import java.awt.Graphics;
import java.awt.image.BufferedImage;
public class Animation {
private int speed;
private int frames;
private int index = 0;
private int count = 0;
private BufferedImage[] images;
private BufferedImage currentImg;
public Animation(int speed, BufferedImage... args){
this.speed = speed;
images = new BufferedImage[args.length];
for(int i = 0; i < args.length; i ++){
images[i] = args[i];
}
frames = args.length;
}
public Animation(int speed, boolean flip, BufferedImage... args) {
if (flip) {
this.speed = speed;
images = new BufferedImage[(args.length * 2) - 2];
for (int i = 0; i < args.length; i++) {
images[i] = args[i];
}
BufferedImage[] temp = new BufferedImage[args.length - 2];
for (int i = args.length - 2; i > 0; i--) {
temp[args.length - i - 2] = images[i];
}
for (int i = args.length; i < images.length; i++) {
images[i] = temp[i - args.length];
}
frames = images.length;
}else{
this.speed = speed;
images = new BufferedImage[args.length];
for (int i = 0; i < args.length; i++) {
images[i] = args[i];
}
frames = args.length;
}
}
public void runAnimation(){
index ++;
if(index > speed){
index = 0;
nextFrame();
}
}
private void nextFrame(){
for(int i = 0; i < frames; i ++){
if(count == i)
currentImg = images[i];
}
count ++;
if(count >= frames)
count = 0;
}
public void drawAnimation(Graphics g, int x, int y, int scaleX, int scaleY){
g.drawImage(currentImg, x, y, scaleX, scaleY, null);
}
}要使用它,只需为每个图像循环创建这个类的一个实例,并在速度参数中给出每个帧与args中的图像之间的滴答数。然后,在你的刻度方法(或者你用什么勾选对象)中,调用run动画,在你的渲染方法中,当你想渲染动画时调用drawAnimation方法。如果将翻转参数添加为true,它将自动反转图像序列。你给它Img1,Img2,Img3,Img4,Img5。它将处理为Img1,Img2,Img3,Img4,Img5,Img4,Img3,Img2。
https://stackoverflow.com/questions/25151300
复制相似问题