目标是实现一个按钮控制的Cube,实现螺旋上升,螺旋下降,和停止。
新建项目,并添加Cube,新建一个C#脚本:
我们开始编辑控制脚本:
private UnityEngine.Vector3 TranslateSpeed = Vector3.up * Time.deltaTime * 0;
private UnityEngine.Vector3 RotateSpeed = Vector3.up * Time.deltaTime * 0;
变量TranslateSpeed记录运动方向和速度,RotateSpeed记录旋转速度和方向 。
void Update()
{
transform.Translate(TranslateSpeed);
transform.Rotate(RotateSpeed);
}
Update函数在游戏每一帧开始时被调用。
void OnGUI()
{
GUI.backgroundColor = Color.red;
if (GUI.Button(new Rect(30, 30, 70, 30), "螺旋上升"))
{
TranslateSpeed = Vector3.up * Time.deltaTime;
RotateSpeed = Vector3.up * Time.deltaTime * 300;
}
if (GUI.Button(new Rect(110, 30, 70, 30), "螺旋下降"))
{
TranslateSpeed = Vector3.down * Time.deltaTime;
RotateSpeed = Vector3.down * Time.deltaTime * 300;
}
if (GUI.Button(new Rect(190, 30, 70, 30), "停止"))
{
TranslateSpeed = TranslateSpeed * 0;
RotateSpeed = RotateSpeed * 0;
}
}
创建可视化的按钮,并编写点击事件,通过改变TranslateSpeed,RotateSpeed这两个变量的值实现不同的运动方式。
脚本文件总体内容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
private UnityEngine.Vector3 TranslateSpeed = Vector3.up * Time.deltaTime * 0;
private UnityEngine.Vector3 RotateSpeed = Vector3.up * Time.deltaTime * 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Translate(TranslateSpeed);
transform.Rotate(RotateSpeed);
}
void OnGUI()
{
GUI.backgroundColor = Color.red;
if (GUI.Button(new Rect(30, 30, 70, 30), "螺旋上升"))
{
TranslateSpeed = Vector3.up * Time.deltaTime;
RotateSpeed = Vector3.up * Time.deltaTime * 300;
}
if (GUI.Button(new Rect(110, 30, 70, 30), "螺旋下降"))
{
TranslateSpeed = Vector3.down * Time.deltaTime;
RotateSpeed = Vector3.down * Time.deltaTime * 300;
}
if (GUI.Button(new Rect(190, 30, 70, 30), "停止"))
{
TranslateSpeed = TranslateSpeed * 0;
RotateSpeed = RotateSpeed * 0;
}
}
}
将脚本添加到Cube上,最终运行效果如下: