返回介绍

RaycastHit.normal 法线

发布于 2019-12-18 15:38:23 字数 2558 浏览 1102 评论 0 收藏 0

JavaScript => public var normal: Vector3;
C# => public Vector3 normal;

Description 描述

The normal of the surface the ray hit.

射线触碰表面的法线。

JavaScript:

	// Calculate the reflection of a "laser beam" off a clicked object.
 
	// The object from which the beam is fired. The incoming beam will
	// not be visible if the camera is used for this!
	var gunObj: Transform;
 
 
	function Update () {
		if (Input.GetMouseButton(0)) {
			var hit: RaycastHit;
			var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 
			if (Physics.Raycast(ray, hit)) {
				// Find the line from the gun to the point that was clicked.
				var incomingVec = hit.point - gunObj.position;
 
				// Use the point's normal to calculate the reflection vector.
				var reflectVec = Vector3.Reflect(incomingVec, hit.normal);
 
				// Draw lines to show the incoming "beam" and the reflection.
				Debug.DrawLine(gunObj.position, hit.point, Color.red);
				Debug.DrawRay(hit.point, reflectVec, Color.green);
			}
		}
	}

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : MonoBehaviour {
    public Transform gunObj;
    void Update() {
        if (Input.GetMouseButton(0)) {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit)) {
                Vector3 incomingVec = hit.point - gunObj.position;
                Vector3 reflectVec = Vector3.Reflect(incomingVec, hit.normal);
                Debug.DrawLine(gunObj.position, hit.point, Color.red);
                Debug.DrawRay(hit.point, reflectVec, Color.green);
            }
        }
    }
}

See Also: Physics.Raycast, Physics.Linecast, Physics.RaycastAll.

RaycastHit

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文