저는 Unity로 게임을 만들고 있으며 한 지점을 중심으로 회전하려면 적이 필요합니다. 나는 atan2를 사용하여 지점의 방향을 얻고 90도를 더한 다음 cos와 sin을 사용하여 위치를 변경합니다. 객체가 회전하지만 지점에서 더 멀어지면 p5js에서 이것을 시도하기로 결정했습니다. 그러나 동일한 문제가 발생합니다.
다음은 코드입니다.
let x = 100;
let y = 100;
let speed = 5
function setup() {
createCanvas(400, 400);
angleMode(DEGREES)
}
function draw() {
background(220);
let dir = atan2(y - height / 2, x - width / 2);
x += cos(dir + 90) * speed;
y += sin(dir + 90) * speed;
rect(x, y, 20, 20);
console.log(dir)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.min.js"></script>
[...] 그러나 지점에서 더 멀리 [...]
물론이야. 당신은 원을 그리며 움직이지 않습니다. 원의 접선을 따라 이동합니다. 접선의 각 단계는 원 중심으로부터의 거리를 증가시킵니다. 따라서 각 프레임에서 중심까지의 거리가 증가합니다.
원래 거리와 현재 거리의 비율로 거리 벡터를 조정하여 쉽게 확인할 수 있습니다.
let x = 100;
let y = 100;
let speed = 5
let dist;
function setup() {
createCanvas(400, 400);
angleMode(DEGREES)
dist = sqrt(pow(y - height/2, 2) + pow(x - width/2, 2));
}
function draw() {
background(220);
let dir = atan2(y - height / 2, x - width / 2);
x += cos(dir + 90) * speed;
y += sin(dir + 90) * speed;
let newDist = sqrt(pow(y - height/2, 2) + pow(x - width/2, 2));
x = (x - width/2) * dist/newDist + width/2
y = (y - height/2) * dist/newDist + height/2
rect(x, y, 20, 20);
console.log(dir)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.min.js"></script>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다