【发布时间】:2013-06-29 18:49:18
【问题描述】:
对于我正在开发的一个 Flash 游戏项目,我想创建一个能够通过光线投射检测玩家的相机。相机应该能够具有不同的视角(例如 45 度或 90 度),并且根据这些视角,光线投射应该有所不同。使用光线投射创建实际视角不会造成问题,但是由于某些超出我能力范围的原因,这些视角所在的角度是错误的。
这是我使用的代码:
for (var i:Number = 0; i < this._viewAngle; i++)
{
var pointX:Number = (this._viewRange) * Math.cos(this._viewAngle + (i * Math.PI / 180));
var pointY:Number = (this._viewRange) * Math.sin(this._viewAngle + (i * Math.PI / 180));
this._rayHolder.graphics.lineTo(pointX, pointY);
this._rayHolder.graphics.moveTo(0, 0);
}
结果如下:
(90度)
(45度)
我希望我写的内容可以理解,因为我不知道如何更清楚地解释它如果有人能阐明我在这里做错了什么,那就太棒了。
编辑:
将 Math.cos(this._viewAngle + (i * Math.PI / 180)); 更改为 Math.cos((this._viewAngle + i) * Math.PI / 180); 会导致:
(90度)
(45度)
【问题讨论】:
-
您似乎没有将 _viewAngle 转换为弧度。
-
同意。另外,也许我不明白,但是在阅读您的代码时,我留下的印象是
_viewAngle被用于两种不同的事情。 1)迭代它以创建“视野”,2)然后将其添加到 sin/cos 中使用的角度,就好像它也是相机指向的角度一样。 -
@DavidMear 我相信我确实使用
* Math.PI / 180转换为弧度。反过来 (* 180 / Math.PI) 应该会产生度数。我只是在我的问题中将它们命名错误。 -
@SunilD。是的,我使用了两次
_viewAngle变量。我这样做是为了在视野中为每个弧度/度画一条线。 -
最新结果更接近我的预期。您将
i转换为弧度,但不是_viewAngle。现在我还期望相机角度和“视野”角度是两个不同的变量。这样您就可以将相机的角度添加到i而不是“视野”角度。最后,您还希望视野的一半在一侧,另一半在另一侧,而不是全部在一侧。希望我说得通。
标签: actionscript-3 drawing angle