Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is raycasting in Unity?
Raycasting is like shining an invisible laser beam from a point in a direction to check if it hits any objects. It helps detect objects in the game world.
Click to reveal answer
beginner
How do you create a simple raycast in Unity?
Use Physics.Raycast(origin, direction, out hitInfo, maxDistance). It sends a ray from origin in direction and stores hit details in hitInfo if it hits something within maxDistance.
Click to reveal answer
intermediate
What does the RaycastHit object provide?
RaycastHit gives information about what the ray hit, like the exact point of contact, the surface normal, and the object's collider.
Click to reveal answer
beginner
Why use raycasting for detection in games?
Raycasting is efficient for checking line of sight, shooting bullets, or detecting if the player can interact with objects without checking every object manually.
Click to reveal answer
beginner
What happens if a raycast does not hit any object?
The raycast returns false, meaning nothing was detected in that direction within the specified distance.
Click to reveal answer
What does Physics.Raycast return if it hits an object?
Afalse
Btrue
Cnull
Dan exception
✗ Incorrect
Physics.Raycast returns true when the ray hits an object.
Which parameter stores information about the object hit by the raycast?
Aorigin
Bdirection
CmaxDistance
DRaycastHit hitInfo
✗ Incorrect
RaycastHit hitInfo stores details about the hit object.
What is the purpose of the maxDistance parameter in raycasting?
ALimits how far the ray checks for collisions
BDefines the ray's speed
CChanges the ray's color
DSets the ray's thickness
✗ Incorrect
maxDistance limits how far the ray travels to detect objects.
If you want to detect objects only on certain layers, what should you use?
ALayerMask in raycast
BChange object color
CUse a different camera
DIncrease maxDistance
✗ Incorrect
Use a LayerMask to filter which layers the raycast can hit.
What does the hitInfo.point represent?
AThe direction of the ray
BThe ray's origin
CThe exact position where the ray hit the object
DThe object's name
✗ Incorrect
hitInfo.point is the exact spot where the ray touched the object.
Explain how raycasting works in Unity and how it helps detect objects.
Think about sending an invisible line and checking what it touches.
You got /5 concepts.
Describe a simple Unity script snippet that uses raycasting to detect if the player is looking at an object within 5 meters.
Use the camera's position and forward direction for the ray.
You got /6 concepts.
Practice
(1/5)
1. What does raycasting do in Unity? Raycast is often used to:
easy
A. Send an invisible line to detect objects in a direction
B. Create a visible laser beam effect
C. Change the color of an object
D. Play a sound when an object is clicked
Solution
Step 1: Understand raycasting purpose
Raycasting sends an invisible line (ray) from a point in a direction to detect objects.
Step 2: Identify correct use
It is used to check if something is hit by this invisible line, like obstacles or targets.
Final Answer:
Send an invisible line to detect objects in a direction -> Option A
Quick Check:
Raycasting = Detect objects with invisible line [OK]
Hint: Raycasting detects objects by sending invisible lines [OK]
Common Mistakes:
Thinking raycasting creates visible effects
Confusing raycasting with changing object properties
Assuming raycasting plays sounds
2. Which of the following is the correct way to start a raycast in Unity C#?
easy
A. Physics.CastRay(origin, direction, hit, maxDistance);
B. Physics.RayCast(origin, direction, hit, maxDistance);
C. Physics.Raycast(origin, direction, out hit, maxDistance);
D. Physics.Raycast(origin, direction, hit, maxDistance);
Solution
Step 1: Recall correct method name and parameters
The correct method is Physics.Raycast with parameters: origin, direction, out hit, maxDistance.
Step 2: Check syntax correctness
Only Physics.Raycast(origin, direction, out hit, maxDistance); uses the exact method name and includes out keyword for hit parameter.
Final Answer:
Physics.Raycast(origin, direction, out hit, maxDistance); -> Option C
Quick Check:
Correct method and out parameter = Physics.Raycast(origin, direction, out hit, maxDistance); [OK]
Hint: Remember 'out' keyword for hit in Physics.Raycast [OK]
Common Mistakes:
Misspelling method name as CastRay or RayCast
Omitting 'out' keyword for hit parameter
Passing hit without 'out' keyword
3. What will be the output of this code snippet?
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 10f)) {
Debug.Log(hit.collider.name);
} else {
Debug.Log("No hit");
}
Assuming there is an object named "Target" 5 units ahead in the forward direction.
medium
A. "No hit"
B. "Target"
C. NullReferenceException
D. Empty string
Solution
Step 1: Understand raycast parameters and scene setup
The raycast starts at the object's position and goes forward 10 units. Since "Target" is 5 units ahead, it will be hit.
Step 2: Analyze output
Because the ray hits "Target", hit.collider.name will be "Target" and printed.
Final Answer:
"Target" -> Option B
Quick Check:
Ray hits object named Target = Output "Target" [OK]
Hint: If object is within distance, raycast hits it [OK]
Common Mistakes:
Assuming no hit if object is closer than maxDistance
Expecting error instead of hit name
Confusing hit.collider.name with hit.transform.name
B. Wrong method name 'Raycast' should be 'CastRay'
C. transform.forward is invalid direction
D. RaycastHit cannot be used with Physics.Raycast
Solution
Step 1: Check method signature
Physics.Raycast requires the hit parameter to be passed with the 'out' keyword.
Step 2: Identify missing keyword
The code passes 'hit' without 'out', causing a compile error.
Final Answer:
Missing 'out' keyword before hit parameter -> Option A
Quick Check:
Missing 'out' causes error = Missing 'out' keyword before hit parameter [OK]
Hint: Always use 'out' before hit in Physics.Raycast [OK]
Common Mistakes:
Omitting 'out' keyword
Changing method name incorrectly
Using invalid direction vector
5. You want to detect only objects on the "Enemy" layer using raycasting. Which code snippet correctly does this?
hard
A. int layerMask = LayerMask.NameToLayer("Enemy");
if (Physics.Raycast(origin, direction, out hit, maxDistance, layerMask)) {
// hit enemy
}
B. int layerMask = 1 << LayerMask.NameToLayer("Enemy");
if (Physics.Raycast(origin, direction, out hit, maxDistance)) {
// hit enemy
}
C. int layerMask = 1 << LayerMask.NameToLayer("Player");
if (Physics.Raycast(origin, direction, out hit, maxDistance, layerMask)) {
// hit enemy
}
D. int layerMask = LayerMask.GetMask("Enemy");
if (Physics.Raycast(origin, direction, out hit, maxDistance, layerMask)) {
// hit enemy
}
Solution
Step 1: Understand layer mask creation
LayerMask.GetMask("Enemy") returns a mask for the "Enemy" layer correctly for raycasting.
Step 2: Eliminate incorrect options
int layerMask = 1 << LayerMask.NameToLayer("Enemy");
if (Physics.Raycast(origin, direction, out hit, maxDistance)) {
// hit enemy
} calculates the layer mask correctly but fails to pass it to the Raycast method, so it detects all layers. int layerMask = 1 << LayerMask.NameToLayer("Player");
if (Physics.Raycast(origin, direction, out hit, maxDistance, layerMask)) {
// hit enemy
} uses the "Player" layer mask instead of "Enemy". int layerMask = LayerMask.NameToLayer("Enemy");
if (Physics.Raycast(origin, direction, out hit, maxDistance, layerMask)) {
// hit enemy
} uses LayerMask.NameToLayer("Enemy") without bit shift, creating an invalid layer mask (index instead of bitmask).
Final Answer:
int layerMask = LayerMask.GetMask("Enemy");
if (Physics.Raycast(origin, direction, out hit, maxDistance, layerMask)) {
// hit enemy
} -> Option D
Quick Check:
Use LayerMask.GetMask for correct layer mask [OK]
Hint: Use LayerMask.GetMask("LayerName") for raycast layer filtering [OK]