旋轉昇天的Cube——unity3D腳本控制

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章