Java 处理动画问题
我回来问另一个处理问题。这次是关于动画的。我正在尝试为我的团队的角色sprite制作一个简单的动画,但效果不太好 我试图通过观看教程来解决这个问题,但它们没有帮助。其中大多数都是不适合游戏的普通动画(如使圆圈像泡泡一样漂浮或像球一样下落),与游戏相关的教程很少。大多数涉及到SpriteSheet,我们没有使用,我和朋友们观看并实现的SpriteSheet也不起作用 动画应该是一个简单的三帧行走循环。目前,代码与我们要做的很接近,它正在显示角色,但是帧是重叠的,而不是运行动画。以下是专用于动画的代码:Java 处理动画问题,java,animation,processing,Java,Animation,Processing,我回来问另一个处理问题。这次是关于动画的。我正在尝试为我的团队的角色sprite制作一个简单的动画,但效果不太好 我试图通过观看教程来解决这个问题,但它们没有帮助。其中大多数都是不适合游戏的普通动画(如使圆圈像泡泡一样漂浮或像球一样下落),与游戏相关的教程很少。大多数涉及到SpriteSheet,我们没有使用,我和朋友们观看并实现的SpriteSheet也不起作用 动画应该是一个简单的三帧行走循环。目前,代码与我们要做的很接近,它正在显示角色,但是帧是重叠的,而不是运行动画。以下是专用于动画的代
public void键按下(){
如果(键==编码){
if(keyCode==左){
inMotion=真;
系统输出打印项次(“左”);
posX=posX-5;
}else if(keyCode==右){
inMotion=真;
posX=posX+5;
System.out.println(“右”);
}否则{
inMotion=假;
}
}
}
公众抽签(){
背景(背景音乐游戏);
填充(50、10、10、150);
if(动态){
//System.out.println(“字符正在运动”);
对于(int i=0;i<3;i++){
系统输出打印LN(i);
图像(playerImages[i]、posX、posY、宽度、高度);
如果(!(i<3)){
i=0;//为循环重新启动
}
}
}否则{
图像(playerImages[1]、posX、posY、宽度、高度);
}
}
如果我们有更好的方法来处理这个问题,请告诉我们 在处理过程中,
draw()
块在每个帧之间运行。计算机执行以下操作:
int motionFrameStart = 0;
float walkSpeed = 20;//number of frames in a full cycle of walking
public void keyPressed() {
if (key == CODED) {
motionFrameStart = frameCount;
//... the rest of your keyPressed() code
}
}
public void draw() {
background(bg_game);
fill(50, 10, 10, 150);
if (inMotion) {
image(playerImages[(playerImages.length/walkSpeed)*((frameCount - motionFrameStart)%walkSpeed)], posX, posY, width, height);
} else {
image(playerImages[1], posX, posY, width, height);
}
}
setup()
块的内容draw()
块for
循环放入draw()
中时,它会执行以下操作:
- 渲染第一个行走帧
- 渲染第二个漫游帧(在第一个帧的顶部)
- 渲染第三个行走帧(位于其他帧之上)
- 在屏幕上显示结果
int motionFrameStart = 0;
float walkSpeed = 20;//number of frames in a full cycle of walking
public void keyPressed() {
if (key == CODED) {
motionFrameStart = frameCount;
//... the rest of your keyPressed() code
}
}
public void draw() {
background(bg_game);
fill(50, 10, 10, 150);
if (inMotion) {
image(playerImages[(playerImages.length/walkSpeed)*((frameCount - motionFrameStart)%walkSpeed)], posX, posY, width, height);
} else {
image(playerImages[1], posX, posY, width, height);
}
}
在此版本中,当您按键时,计算机会在开始行走时保存帧,然后根据按钮按下后显示的帧数计算要使用的行走图片