RaycastHit.normal

var normal : Vector3

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);
}
}
}

using UnityEngine;
using System.Collections;

public class example : 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);
}
}
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

public gunObj as Transform

def Update():
if Input.GetMouseButton(0):
hit as RaycastHit
ray as Ray = Camera.main.ScreenPointToRay(Input.mousePosition)
if Physics.Raycast(ray, hit):
incomingVec as Vector3 = (hit.point - gunObj.position)
reflectVec as Vector3 = 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.