目標是實現一個按鈕控制的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上,最終運行效果如下: