Java 如何跟踪圆移动的帧数?
我使用jumpTime来跟踪经过的帧数,但我不知道如何计算它。然后我应该使用跳跃时间、跳跃持续时间和点跳跃来计算跳跃偏移。jumpOffset用于对x和y坐标进行加或减以使其移动。我将遇到问题的代码行加粗。jumpTime是一个计数器,用于存储当前经过的帧数和jumpOffset,jumpOffset是移动圆的变量。非常感谢您的帮助Java 如何跟踪圆移动的帧数?,java,Java,我使用jumpTime来跟踪经过的帧数,但我不知道如何计算它。然后我应该使用跳跃时间、跳跃持续时间和点跳跃来计算跳跃偏移。jumpOffset用于对x和y坐标进行加或减以使其移动。我将遇到问题的代码行加粗。jumpTime是一个计数器,用于存储当前经过的帧数和jumpOffset,jumpOffset是移动圆的变量。非常感谢您的帮助 final float SHORT_HAND = 150; final float LONG_HAND= 200; float longHandAngle = 0
final float SHORT_HAND = 150;
final float LONG_HAND= 200;
float longHandAngle = 0;
float shortHandAngle = 0;
float longHandSpeed = 0.02;
float shortHandSpeed = 0.01;
final float DOT_SIZE = 20;
final float DOT_SPACING = 160;
final float DOT_JUMP = 180;
float flyX;
float flyY;
boolean isJumping;
boolean atTop;
boolean atLeft;
boolean jumpUp;
boolean jumpDown;
boolean jumpLeft;
boolean jumpRight;
int jumpTime;
final int JUMP_DURATION = 20;
float jumpOffset;
int flyJumpAdj = 5;
void setup()
{
size(500,500);
background(#24FF46);
flyX = DOT_SPACING;
flyY = DOT_SPACING;
}
void draw()
{
drawHands();
drawDots();
moveHands();
drawFly();
moveFly();
}
void drawHands()
{
strokeWeight(5);
stroke(#FFC524);
background(#24FF46);
line(width/2,height/2,width/2 + cos(longHandAngle) * LONG_HAND,height/2 + sin(longHandAngle) *
LONG_HAND);
line(width/2,height/2,width/2 + cos(shortHandAngle) * SHORT_HAND,height/2 + sin(shortHandAngle) *
SHORT_HAND);
}
void drawDots()
{
stroke(0);
strokeWeight(1);
fill(#24C6FF);
circle(DOT_SPACING,DOT_SPACING,DOT_SIZE);
circle(width - DOT_SPACING,DOT_SPACING,DOT_SIZE);
circle(DOT_SPACING,height - DOT_SPACING,DOT_SIZE);
circle(width - DOT_SPACING,height - DOT_SPACING,DOT_SIZE);
}
void moveHands()
{
longHandAngle = (longHandAngle + longHandSpeed)%TWO_PI;
shortHandAngle = (shortHandAngle + shortHandSpeed)%TWO_PI;
}
void drawFly()
{
fill(255);
circle(flyX,flyY,25);
}
void keyPressed()
{
if(isJumping)
{
keyPressed = false;
}
if((flyX > DOT_SPACING && flyX < width-DOT_SPACING) || (flyY > DOT_SPACING && flyY < height-
DOT_SPACING) )
{
isJumping = true;
}
if((flyX == DOT_SPACING || flyX == width - DOT_SPACING) && (flyY == DOT_SPACING || flyY == height
- DOT_SPACING))
{
jumpTime = 0;
isJumping = false;
}
if(key == CODED){
if(keyCode == DOWN)
{
jumpDown = true;
}
if(keyCode == UP)
{
jumpUp = true;
}
if(keyCode == LEFT)
{
jumpLeft = true;
}
if(keyCode == RIGHT)
{
jumpRight = true;
}
}
}
void moveFly()
{
setOffset();
**jumpTime = jumpTime + 1 % JUMP_DURATION;**
if(flyY == DOT_SPACING)
{
atTop = true;
}
if(flyX == DOT_SPACING)
{
atLeft = true;
}
if(atTop)
{
jumpUp = false;
}
if(atLeft)
{
jumpLeft = false;
}
if(atTop && atLeft == false)
{
jumpRight = false;
}
if(atTop == false && atLeft)
{
jumpDown = false;
}
if(atTop == false && atLeft == false)
{
jumpDown = false;
jumpRight = false;
jumpLeft = true;
jumpRight = true;
}
if(jumpRight && flyX >= DOT_SPACING && flyX < width - DOT_SPACING)
{
flyX += jumpOffset;
}
if(jumpLeft && flyX >= DOT_SPACING && flyX <= width - DOT_SPACING)
{
flyX = flyX - flyJumpAdj - flyJumpAdj;
}
if(jumpUp && flyY > DOT_SPACING && flyY <= height - DOT_SPACING)
{
flyY -= flyJumpAdj;
}
if(jumpDown && flyY >= DOT_SPACING && flyY < height - DOT_SPACING)
{
flyY += jumpOffset;
}
}
void setOffset()
{
**jumpOffset = (jumpTime + 9)%DOT_JUMP;**
}
final float SHORT\u HAND=150;
最终浮动长手=200;
浮动长柄角=0;
浮动短手角度=0;
浮动长手速度=0.02;
浮球速比=0.01;
最终浮动点_尺寸=20;
最终浮动点间距=160;
最终浮点数跳=180;
浮动flyX;
浮蝇;
布尔跳跃;
布尔阿拓;
布尔atLeft;
布尔跳跃;
布尔跳下;
布尔左跳;
布尔右键;
整数跳时;
最终整数跳跃持续时间=20;
浮动跳线偏移;
int flyJumpAdj=5;
无效设置()
{
尺寸(500500);
背景(#24FF46);
flyX=点间距;
flyY=点间距;
}
作废提款()
{
拉手();
drawDots();
移动双手();
蜻蜓();
moveFly();
}
无效拉手()
{
冲程重量(5);
冲程(#FFC524);
背景(#24FF46);
线条(宽度/2,高度/2,宽度/2+cos(长臂角度)*长臂,高度/2+sin(长臂角度)*
长手);
线条(宽度/2,高度/2,宽度/2+cos(速记角度)*速记,高度/2+sin(速记角度)*
短手);
}
void drawDots()
{
冲程(0);
冲程重量(1);
填充(#24C6FF);
圆(点间距、点间距、点大小);
圆(宽度-点间距、点间距、点大小);
圆(圆点间距、高度-圆点间距、圆点大小);
圆(宽度-圆点间距,高度-圆点间距,圆点尺寸);
}
无效移动指针()
{
longHandAngle=(longHandAngle+longHandSpeed)%TWO\u PI;
速记角度=(速记角度+速记速度)%TWO\u PI;
}
void drawFly()
{
填充(255);
圆圈(flyX,flyY,25);
}
按下void键()
{
如果(正在跳跃)
{
按键=假;
}
如果((flyX>点间距和&flyX<宽度-点间距)| |(flyY>点间距和&flyY<高度-
点(U间距)
{
isJumping=true;
}
如果((flyX==点间距| | flyX==宽度-点间距)和&(flyY==点间距| | flyY==高度
-点(U间距)
{
跳跃时间=0;
isJumping=false;
}
如果(键==编码){
如果(键代码==向下)
{
跳下=真;
}
if(keyCode==UP)
{
jumpUp=true;
}
if(keyCode==左)
{
jumpLeft=true;
}
if(keyCode==右)
{
jumpRight=true;
}
}
}
void moveFly()
{
setOffset();
**跳跃时间=跳跃时间+1%跳跃持续时间**
如果(飞边==点间距)
{
阿托普=真;
}
如果(flyX==点间距)
{
atLeft=真;
}
if(atTop)
{
跳升=假;
}
如果(atLeft)
{
jumpLeft=false;
}
if(atTop&&atLeft==false)
{
jumpRight=false;
}
if(atTop==false&&atLeft)
{
跳下=错误;
}
if(atTop==false&&atLeft==false)
{
跳下=错误;
jumpRight=false;
jumpLeft=true;
jumpRight=true;
}
如果(jumpRight&&flyX>=点间距和&flyX<宽度-点间距)
{
flyX+=跳线偏移;
}
if(jumpLeft&&flyX>=点间距&&flyX点间距&&flyY=点间距&&flyY<高度-点间距)
{
flyY+=跳跃偏移;
}
}
void setOffset()
{
**跳跃偏移=(跳跃时间+9)%DOT\u跳跃**
}