簡體   English   中英

這個unity3d c#代碼是什么意思?

[英]What does this unity3d c# code mean?

Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 newDotPosition =
    mouseRay.origin - mouseRay.direction / mouseRay.direction.y * mouseRay.origin.y;

我看到newDotPosition是游戲對象在地形中的位置。 但是下面的代碼做了什么?

mouseRay.direction / mouseRay.direction.y * mouseRay.origin.y

實際上它是一些基本的幾何形狀。

mouseRay.origin是相機的世界位置。 所以mouseRay.origin.y是相機的高度。

mouseRay.direction / mouseRay.direction.y * mouseRay.origin.y是下圖中的紅色矢量。 它只是將mouseRay.direction一直擴展到地面。

然后它執行mouseRay.origin - result以在世界坐標中獲得地面上的生命值。

在此輸入圖像描述

如果有人感興趣,這里是查看結果的代碼。

public class Test : MonoBehaviour
{
    public float originGizmoRadius = 1f;
    public float newDotPositionGizmoSize = 0.5f;
    public float directionLength = 2f;

    Vector3 origin;
    Vector3 direction;
    Vector3 newDotPosition;

    void Update()
    {
        Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);

        origin = mouseRay.origin;
        direction = mouseRay.direction;

        newDotPosition = origin - direction / direction.y * origin.y;
    }

    void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawSphere(origin, originGizmoRadius);
        Gizmos.DrawLine(origin, origin + (direction.normalized * directionLength));

        Gizmos.color = Color.green;
        Gizmos.DrawCube(newDotPosition, newDotPositionGizmoSize * Vector3.one);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM