因此,我正试图使我的坦克炮塔上的枪指向屏幕中心,就像《坦克世界》中那样,你有一个瞄准枪的十字准线和一个瞄准屏幕中心的十字准线。

问题在于,作为枪支的世界空间中的UI图像的枪十字准线与图像中较大的十字准线的屏幕中心并不完全对齐[在此处输入图像描述] [1]。

编辑:这样就可以了,但是如何将其更改为x轴呢?

public class CenterCursor : MonoBehaviour
{
// speed is the rate at which the object will rotate
public float speed;

void FixedUpdate()
{

    // Generate a plane that intersects the transform's position with an upwards normal.
    Plane playerPlane = new Plane(Vector3.up, transform.position);

    // Generate a ray from the cursor position
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    // Determine the point where the cursor ray intersects the plane.
    // This will be the point that the object must look towards to be looking at the mouse.
    // Raycasting to a Plane object only gives us a distance, so we'll have to take the distance,
    //   then find the point along that ray that meets that distance.  This will be the point
    //   to look at.
    float hitdist = 0.0f;
    // If the ray is parallel to the plane, Raycast will return false.
    if (playerPlane.Raycast(ray, out hitdist))
    {
        // Get the point along the ray that hits the calculated distance.
        Vector3 targetPoint = ray.GetPoint(hitdist);


        // Determine the target rotation.  This is the rotation if the transform looks at the target point.
        Quaternion targetRotation = Quaternion.LookRotation( targetPoint - transform.position);

        // Smoothly rotate towards the target point.
        transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
    }
}

最佳答案

您还可以尝试将转塔对象作为相机对象的子对象...

10-06 06:39