假設(shè)你正在應聘華為外包公司的Unity開發(fā)崗位,以下是一個可能的面試題:
面試題目:Unity實現(xiàn)物體移動和旋轉(zhuǎn)
問題描述:
請使用Unity引擎編寫一個簡單的場景,其中包含一個立方體和一個球體。要求通過鍵盤輸入控制立方體的移動和球體的旋轉(zhuǎn)。
具體要求:
1. 當按下"W"鍵時,立方體沿著場景的正前方(Forward)向前移動。
2. 當按下"S"鍵時,立方體沿著場景的負前方(Backward)向后移動。
3. 當按下"A"鍵時,立方體沿著場景的左側(cè)(Left)向左移動。
4. 當按下"D"鍵時,立方體沿著場景的右側(cè)(Right)向右移動。
5. 當按下"Q"鍵時,球體圍繞立方體的Y軸逆時針旋轉(zhuǎn)。
6. 當按下"E"鍵時,球體圍繞立方體的Y軸順時針旋轉(zhuǎn)。
解題思路:
使用Unity的C#腳本來實現(xiàn)物體的移動和旋轉(zhuǎn)。首先,需要為立方體和球體分別添加一個腳本,然后在腳本中監(jiān)聽鍵盤輸入,并根據(jù)輸入來控制物體的移動和旋轉(zhuǎn)。
Unity場景搭建和腳本編寫:
1. 在Unity中創(chuàng)建一個新場景,并在場景中放置一個立方體和一個球體。
2. 為立方體和球體分別創(chuàng)建一個C#腳本,例如CubeController.cs和SphereController.cs,并將腳本掛載到對應的物體上。
CubeController.cs腳本:
using UnityEngine;
public class CubeController : MonoBehaviour
{
public float moveSpeed = 5f;
void Update()
{
// 監(jiān)聽鍵盤輸入,并控制立方體的移動
if (Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.S))
transform.Translate(Vector3.back * moveSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.A))
transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.D))
transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
}
}
SphereController.cs腳本:
using UnityEngine;
public class SphereController : MonoBehaviour
{
public float rotationSpeed = 100f;
void Update()
{
// 監(jiān)聽鍵盤輸入,并控制球體的旋轉(zhuǎn)
if (Input.GetKey(KeyCode.Q))
transform.RotateAround(transform.parent.position, Vector3.up, rotationSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.E))
transform.RotateAround(transform.parent.position, Vector3.down, rotationSpeed * Time.deltaTime);
}
}
在場景中,將Sphere對象作為立方體的子對象,這樣球體就能夠圍繞立方體旋轉(zhuǎn)。
完成上述操作后,保存場景和腳本,并運行Unity場景。然后,按下"WASD"鍵來控制立方體的移動,按下"QE"鍵來控制球體的旋轉(zhuǎn)。
這個面試題旨在考察你對Unity引擎和C#腳本的基本掌握程度,同時展示你在解決問題上的思考能力和實際操作能力。希望以上面試題案例對你有所幫助,祝你面試順利!