华为外包unity面试题
假设你正在应聘华为外包公司的Unity开发岗位,以下是一个可能的面试题:
面试题目:Unity实现物体移动和旋转
问题描述:
请使用Unity引擎编写一个简单的场景,其中包含一个立方体和一个球体。要求通过键盘输入控制立方体的移动和球体的旋转。
具体要求:
1. 当按下"W"键时,立方体沿着场景的正前方(Forward)向前移动。
2. 当按下"S"键时,立方体沿着场景的负前方(Backward)向后移动。
3. 当按下"A"键时,立方体沿着场景的左侧(Left)向左移动。
4. 当按下"D"键时,立方体沿着场景的右侧(Right)向右移动。
5. 当按下"Q"键时,球体围绕立方体的Y轴逆时针旋转。
6. 当按下"E"键时,球体围绕立方体的Y轴顺时针旋转。
解题思路:
使用Unity的C#脚本来实现物体的移动和旋转。首先,需要为立方体和球体分别添加一个脚本,然后在脚本中监听键盘输入,并根据输入来控制物体的移动和旋转。
Unity场景搭建和脚本编写:
1. 在Unity中创建一个新场景,并在场景中放置一个立方体和一个球体。
2. 为立方体和球体分别创建一个C#脚本,例如CubeController.cs和SphereController.cs,并将脚本挂载到对应的物体上。
CubeController.cs脚本:
using UnityEngine;
public class CubeController : MonoBehaviour
{
public float moveSpeed = 5f;
void Update()
{
// 监听键盘输入,并控制立方体的移动
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()
{
// 监听键盘输入,并控制球体的旋转
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对象作为立方体的子对象,这样球体就能够围绕立方体旋转。
完成上述操作后,保存场景和脚本,并运行Unity场景。然后,按下"WASD"键来控制立方体的移动,按下"QE"键来控制球体的旋转。
这个面试题旨在考察你对Unity引擎和C#脚本的基本掌握程度,同时展示你在解决问题上的思考能力和实际操作能力。希望以上面试题案例对你有所帮助,祝你面试顺利!