gpt4 book ai didi

c# - unity destination Vector 基于旋转和移动量

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:42 24 4
gpt4 key购买 nike

我遇到了一个问题,我无法找出基于对象旋转和移动量找出目标点的算法。我必须向我的旋转方向移动一定量,但我不知道如何计算我最终到达的目的地点。示例:

Object location = (0, 0)
Object rotation = 45
Amount to move = 4

使用这些变量,目标点将是 (2.5, 2.5)

示例 2:

Object location = (0, 0)
Object rotation = 0
Amount to move = 4

有了这些,它就是 (0, 4)

问题是,当我知道这些变量时,我不知道如何计算目的地点。我需要一个可以计算目的地点的算法,有人可以帮忙吗? :)

问候,图克卡。

最佳答案

如果这是一个严格的算法问题,您想在其中计算目标点(即没有可移动的游戏对象,而是抽象数据),您可以这样做:考虑笛卡尔坐标中的二维平面(即标准 x/y 系统)。设 O 为点 (0,0) 处的对象。从你的“目的地”(2.5,2.5)我可以假设你想要以下东西:

enter image description here

所以 45° 是角度,4(移动量)是您要移动的线段的长度。从 (0,0) 开始,可以使用点的极坐标表示的公式使用正弦和余弦计算该终点:

formula2

但实际上,该图像是错误的,我们将在下面的计算中看到这一点。如果运动沿着倾斜角为 45° 的直线,您会在其他地方着陆一点。

无论如何,对于此示例,alpha 将是 45°,即以弧度为单位的 pi/4(通过除以 180 再乘以 pi 得到),半径 r 将是 4(我们要移动的数量),所以我们计算的目标点为:

formula3

如果该点位于房间的任何位置(不是在 (0,0) 而是在 (x_0, y_0)),那么您仍然可以将其添加为偏移量:

formula4

所以在代码中你会写:

 public static Vector2 ComputeDestination(Vector2 origin, float amountToMove, float angle) 
{
//convert degrees to radians
var rad = angle * Mathf.Deg2Rad;
//calculate end point
var end_point = origin + amountToMove * new Vector2(Mathf.Cos(rad), Mathf.Sin(rad));
return end_point;
}

关于c# - unity destination Vector 基于旋转和移动量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35183365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com