画一部分图像?

时间:2014-04-19 20:50:56

标签: image processing

我正在制作一个游戏,我有一个我的角色的精灵表,但显然我只是想一次绘制一帧我的角色动画。是否可以使用image()函数?

这是代码(这是针对特定的人帮助我)

    'PImage spritesheet;
    int DIM_X = 13;
    int DIM_Y = 1;
    PImage[] sprites =  new PImage[DIM_X*DIM_Y];

    void setup() {
     size(300, 300);
     imageMode(CENTER);
     spritesheet = loadImage("PlayerSprites.png");
     int W = spritesheet.width/DIM_X;
     int H = spritesheet.height/DIM_Y;
     for (int i=0; i<sprites.length; i++) {
      int x = i%DIM_X*W;
      int y = i/DIM_Y*H;
      sprites[i] = spritesheet.get(x, y, W, H);
    }
    frameRate(10);
  }

 void draw() {

background(0,0,0);    
image(sprites[frameCount%sprites.length], width/2, height/2);

}'

1 个答案:

答案 0 :(得分:3)

以下代码将满足您的需求:

PImage spritesheet;
int DIM_X = 6;
int DIM_Y = 5;
PImage[] sprites = new PImage[DIM_X*DIM_Y];

void setup() {
  spritesheet = loadImage("http://payload23.cargocollective.com/1/6/200359/2773164/player_7.png");
  size(300, 300);
  imageMode(CENTER);
  int W = spritesheet.width/DIM_X;
  int H = spritesheet.height/DIM_Y;
  for (int i=0; i<sprites.length; i++) {
    int x = i%DIM_X*W;
    int y = i/DIM_Y*H;
    sprites[i] = spritesheet.get(x, y, W, H);
  }
  frameRate(10);
}

void draw() {
  background(0,0,0);
  image(sprites[frameCount%sprites.length], width/2, height/2);
}

您需要记住一些事项:

  • DIM_XDIM_Y表示沿x和y的精灵数量 在你的精灵表上。所以你需要改变这些数字 相应地。
  • 此外,PImage正在从互联网上获取,显然,你 需要更改String的{​​{1}}。
  • 这是不完美的。您需要调整它以满足您的需求。对于 例如,在我使用的精灵表中,最后一行只有三个 导致闪烁的字符实例 动画。你需要确保补偿这些东西 你的代码或让你的精灵表整齐均匀。
  • 如果您的精灵表只有一行。将此行:loadImage()更改为int y = i/DIM_Y*H;,以反映行数不会更改。