Unity小遊戲——移動的小船船(搖桿控制方向)

關鍵功能:

1、攝影機跟隨船體移動

2、船體在水面上晃動

3、搖桿控制方向

搖桿控制方向的話,這裏我是簡單的使用了一個Unity的插件:EasyTouch,EasyTouch裏面的有一個EasyJoyStick(搖桿控制)

當你導入到你的Unity工程的時候,你的窗口選項就會多一個:

然後我們就可以按照這個步驟來創建一個EasyJoyStick的對象:

創建完成之後,我們就可以在Game視圖看到一個搖桿

這個搖桿就是隻有橫豎兩個值,x,y值,分別對應3D空間中的x,z軸。

 

然後我們創建一個腳本,然後將這個腳本掛在我們要控制的人物的身上,

下面是詳細的代碼分析:

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
  
public class BossMove : MonoBehaviour  
{  
  // 這個是我們剛纔創建的 EasyJoyStick的對象,我們使用它來獲取 一些簡單的數值
    public EasyJoystick easyJoystick;  
  
    float Speed = 5.0f;  
    // 假設3秒轉一圈,那麼一秒就算是轉120度  ,這個數值是用來控制轉向的
    float w_speed = 120f;  
  
    // Start is called before the first frame update  
    void Start()  
    {  
          
    }  
  
    // Update is called once per frame  
    void Update()  
    {  
        ControlMove();  
    }  
  
    void ControlMove()  
{  
  // 我們通過搖桿的x,y的偏移量
        float Joystick_x = easyJoystick.JoystickAxis.x;  
        float Joystick_y = easyJoystick.JoystickAxis.y;  
        //Vector3 targetDirection;  
  
        // 船的移動  
//當搖桿搖動超過一定範圍的時候,纔去移動對象
        if (Joystick_y >= 0.5f)  
        {  
            // Translate:向某個方向移動多少距離 
// 搖桿的Y軸對應的就是3D空間的Z軸,然後當搖桿Y軸有動的時候,就將物體在Z軸方向移動 
            this.transform.Translate(0, 0, Speed * Time.deltaTime);   
        }  
        else if(Joystick_y <= -0.5f)  
        {  
  // 上面是搖桿的方向向上(Y軸的正方向),也就是3D向前移動,
      //  現在是搖桿方向向下(Y軸的負方向),也就是3D裏面向移動 
            this.transform.Translate(0, 0, -Speed * Time.deltaTime);  
        }  
  
        if (Joystick_x >= 0.5f)  
        {  
            // Translate:向某個方向移動多少距離  
     // 這個是和上面的移動方式同理,只不過搖桿的X軸移動,對應的是3D物體的X軸移動
            this.transform.Translate(Speed * Time.deltaTime, 0, 0);  
        }  
        else if (Joystick_x <= -0.5f)  
        {  
            this.transform.Translate(-Speed * Time.deltaTime, 0, 0);  
        }  
  
        // 船的轉向  
   // 船的轉向一定是繞着Y軸旋轉,所以當搖桿的X軸有變化的時候,也就是有轉向變化的時候
// 當X軸的值大於0,也就是右轉向的時候,我們旋轉正值
        if(Joystick_x > 0.5f)  
        {    
 	  // 這個時候我們讓其圍繞着Y軸,做正方向的旋轉
            this.transform.Rotate(0,this.w_speed * Time.deltaTime,0);  
        }  
        else if(Joystick_x < -0.5f)  
        {  
 // 當搖桿是負方向的時候,就旋轉一個負值,這個時候對應的就是相反的方向
            this.transform.Rotate(0, -this.w_speed * Time.deltaTime, 0);  
        }  
  
    }  
}  

Github:https://github.com/YuDang1024/UnityGames/tree/master/MovingBoat

 

 

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