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

 

 

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