【发布时间】:2021-01-24 02:05:53
【问题描述】:
我正在 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>
【问题讨论】:
-
到底是javascript还是C#
-
帖子里没有问题。您的意思是要问如何统一地围绕另一个位置旋转一个位置?该逻辑不起作用,因为您正在向圆上的切线方向移动
speed单位,但这并不描述圆周运动。基本上与this answer 中解决的问题相同。您需要采取不同的方法。 -
两者兼而有之。我最初是统一做的,然后去看看我是否用 js 得到相同的结果,但我发现问题出在我的方法上。我该怎么做呢,获取当前坐标,转换为极坐标并调整 theta 然后再转换回笛卡尔坐标会更好吗?
标签: javascript processing p5.js