我正在使用源sdk(使用c ++),我想旋转实体的角度,以便它查看另一个实体。
可以将实体视为游戏对象或类似物体,并且在世界中具有位置(矢量)以及角度(矢量)。
我可以使用SetAbsAngles旋转实体,它将QAngle(基本上是矢量)作为参数。
答案 0 :(得分:3)
这是一些伪代码:
vec3 p = entity2->getPosition();
vec3 r = entity1->getPosition();
float xdistance = p[0] - r[0];
float ydistance = p[1] - r[1];
float zdistance = p[2] - r[2];
float xzdistance = sqrt(xdistance * xdistance + zdistance * zdistance);
entitity1->setHeading(atan2(xdistance, zdistance)); // rotation around y
entitity1->setPitch(-atan2(ydistance, xzdistance)); // rotation around x
entitity1->setBank(0); // rotation around z
z旋转设置为0,因为无法确定。如果您愿意,可以自由设置。
这适用于坐标系,z面向前,y向上,x向右。如果您使用的是其他系统,则可能需要调整一些标志。