Java 跳雪碧
我正在为学校制作一个2d格斗游戏(想想扣杀兄弟),但我不知道如何使用y的速度让精灵跳跃。这是我的按键代码:Java 跳雪碧,java,swing,keylistener,Java,Swing,Keylistener,我正在为学校制作一个2d格斗游戏(想想扣杀兄弟),但我不知道如何使用y的速度让精灵跳跃。这是我的按键代码: if (key == KeyEvent.VK_LEFT) { p2.setVelX(-3); } else if (key == KeyEvent.VK_RIGHT) { p2.setVelX(3); } else if (key == KeyEvent.VK_UP) { p2.setVelY(-3)
if (key == KeyEvent.VK_LEFT)
{
p2.setVelX(-3);
}
else if (key == KeyEvent.VK_RIGHT) {
p2.setVelX(3);
}
else if (key == KeyEvent.VK_UP) {
p2.setVelY(-3);
}
else if (key == KeyEvent.VK_DOWN)
{
p2.setVelY(3);
}
下面是一些来自玩家的信息:
public class Player {
private double x;
private double y;
private BufferedImage player;
private double velX = 0;
private double velY = 0;
public Player(double x, double y, Game game) {
this.x = x;
this.y = y;
SpriteSheet ss = new SpriteSheet(game.getSpriteSheet());
player = ss.grabImage(1,1,32,32);
}
private void initPlayer() {
}
public void tick()
{
x+=velX;
y+=velY;
if(x <= 0)
x=0;
if (x >= 940-32)
x=940-32;
if(y <= 0)
y=0;
if (y >= 370-64)
y=370-64;
}
public void render(Graphics g)
{
g.drawImage(resize(player,64,64), (int)x, (int)y, null);
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public void setX(double x)
{
this.x = x;
}
public void setY(double y)
{
this.y = y;
}
public void setVelX(double velX)
{
this.velX = velX;
}
public void setVelY(double velY)
{
this.velY = velY;
}
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = dimg.createGraphics();
g2d.drawImage(tmp, 0, 0, null);
g2d.dispose();
return dimg;
}
公共类播放器{
私人双x;
私人双y;
私人缓冲图像播放器;
私人双velX=0;
私有双精度=0;
公共玩家(双x,双y,游戏){
这个.x=x;
这个。y=y;
SpriteSheet ss=新的SpriteSheet(game.getSpriteSheet());
player=ss.grabImage(1,1,32,32);
}
私有播放器(){
}
公共空白勾号()
{
x+=velX;
y+=0;
如果(x=940-32)
x=940-32;
如果(y=370-64)
y=370-64;
}
公共空间渲染(图形g)
{
g、 drawImage(调整大小(播放器,64,64),(整数)x,(整数)y,null);
}
公共双getX(){
返回x;
}
公共双盖{
返回y;
}
公共无效集x(双x)
{
这个.x=x;
}
公共空间设置(双y)
{
这个。y=y;
}
公共无效设置级别(双级别)
{
this.velX=velX;
}
公共无效设置(双重设置)
{
这是一个很好的例子;
}
公共静态BuffereImage resize(BuffereImage img、int newW、int newH){
Image tmp=img.getScaledInstance(newW、newH、Image.SCALE\u平滑);
BuffereImage dimg=新的BuffereImage(newW,newH,buffereImage.TYPE_INT_ARGB);
Graphics2D g2d=dimg.createGraphics();
g2d.drawImage(tmp,0,0,null);
g2d.dispose();
返回dimg;
}
}
我应该为VK_UP if()语句添加什么。我必须使用swing和击键而不是按键侦听器吗?谢谢。
FloatSpring
就是一个例子。你需要知道的一个概念是,物体有一个初始速度,随着时间的推移,它会降低到一个已知的状态(比如0)