클런 뮤어 :
기본적으로 난 그냥 이동 객체 떨어져 원 반송을하는 방법에 대한 몇 가지 지침을합니다. 임 문제가 발생하고 3 시간 동안 노력 해왔다 따라서 지원 포럼에 돌았 다. 나는 문 '이'복수를 시도했지만 분명히 내가 없음으로 제대로 이해하고 있지 않다가 노력하고 있습니다. 감사합니다 :)
나는 문 다른 경우에 이것을 알아 내기 위해 3 시간 동안 노력 해왔다.
float x;
float easing = 1;
float circle_x = 1;
float circle_y = 30;
float rad = 12.5;
float gravity = 0.98;
float move_x = 5;
float move_y = 5;
void setup() {
size(640, 480);
frameRate(60);
}
void draw() {
background(#87CEEB);
fill(#7cfc00);
rect(0, 430, 640, 80);
float targetX = mouseX;
float dx = targetX - x;
x += dx * easing;
fill(#000000);
rect(x, 400, 30, 30);
rect(x-20, 390, 70, 10);
rect(x, 430, 5, 20);
rect(x+25, 430, 5, 20);
ellipse(circle_x, circle_y, 25, 25);
circle_x = circle_x + move_x;
circle_y = circle_y + move_y;
if (circle_x > width) {
circle_x = width;
move_x = -move_x;
}
if (circle_y > height) {
circle_y = height;
move_y = -move_y;
}
if (circle_x < 0) {
circle_x = 0;
move_x = -move_x;
}
if (circle_y < 0) {
circle_y = 0;
move_y= -move_y;
}
}
볼이 내 마우스 커서 (안 개체), glitchy 원과 stuttery 이미지에 의해 반송되는 : 문장 만 다시받는 경우에 어떤 변수를 삽입.
Rabbid76 :
는 x 공 좌표 경우 객체의 범위이다 (체크하는 objW
물체의 폭) :
circle_x > x && circle_x < x + objW
는 Y 공 좌표 경우와 도달 물체의 레벨 ( objH
오브젝트 레벨이며, circleR
볼의 반경)
circle_y > objH - circleR
또한 먼저 히트 테스트를하고 개체가 후에 땅을 반송하는 경우 테스트를 수행하는 것이 중요하다. 좋은 스타일은이 작업을 수행하는 것입니다 else if
문 :
int objX1 = -20;
int objX2 = 70;
int objH = 390;
int circleR = 25/2;
if (circle_x > x + objX1 && circle_x < x + objX2 && circle_y > objH - circleR ) {
circle_y = objH-circleR;
move_y = -move_y;
}
else if (circle_y > height) {
circle_y = height;
move_y = -move_y;
}
else if (circle_y < 0) {
circle_y = 0;
move_y= -move_y;
}
또한 내가 먼저 공의 위치를 계산하고 IST 현재 위치에 공을 그릴 것을 권장합니다 :
float x;
float easing = 1;
float circle_x = 1;
float circle_y = 30;
float rad = 12.5;
float gravity = 0.98;
float move_x = 5;
float move_y = 5;
void setup() {
size(640, 480);
frameRate(60);
}
void draw() {
background(#87CEEB);
fill(#7cfc00);
rect(0, 430, 640, 80);
float targetX = mouseX;
float dx = targetX - x;
x += dx * easing;
circle_x = circle_x + move_x;
circle_y = circle_y + move_y;
if (circle_x > width) {
circle_x = width;
move_x = -move_x;
}
else if (circle_x < 0) {
circle_x = 0;
move_x = -move_x;
}
int objW = 70;
int objH = 390;
int circleR = 25/2;
if (circle_x > x && circle_x < x + objW && circle_y > objH-circleR ) {
circle_y = objH-circleR;
move_y = -move_y;
}
else if (circle_y > height) {
circle_y = height;
move_y = -move_y;
}
else if (circle_y < 0) {
circle_y = 0;
move_y= -move_y;
}
fill(#000000);
rect(x, 400, 30, 30);
rect(x-20, 390, 70, 10);
rect(x, 430, 5, 20);
rect(x+25, 430, 5, 20);
ellipse(circle_x, circle_y, 25, 25);
}