Closed OkanoShinri closed 3 years ago
が意外とめんどい。カメラ動かす方が良いかも。
delta_x_in_box
delta_y_in_box
delta_pos_in_box
if (isInBox(x, y, w, h, pos.x + velocity.x, pos.y) || isInBox(x, y, w, h, pos.x - velocity.x, pos.y))
{
delta_x_in_box = true;
}
else if (isInBox(x, y, w, h, pos.x, pos.y + velocity.y) || isInBox(x, y, w, h, pos.x, pos.y - velocity.y))
{
delta_y_in_box = true;
}
else if (isInBox(x, y, w, h, pos.x + velocity.x, pos.y + velocity.y))
{
delta_pos_in_box = true;
}
velocity
)を算出するif (delta_x_in_box && delta_y_in_box) {
velocity = -velocity;
}
else if (delta_x_in_box) {
velocity.x = -velocity.x;
}
else if (delta_y_in_box) {
velocity.y = -velocity.y;
}
else if (delta_pos_in_box) {
velocity = -velocity;
}
pos += velocity;
delta_x_in_box = false;
delta_y_in_box = false;
delta_pos_in_box = false;
これで四方からぶつかるときも角にぶつかるときも連続して並んでいる箱の境界にぶつかるときも大丈夫なはず…