CocosCreator遊戲開發(四)實現搖桿控制角色功能

時隔3年,我又開始繼續寫這個系列的帖子了,也不知道是會寫完全系列,還是再次夭折。
廢話不多。直接開始主題了
主要實現的功能點包含這些內容:通過搖桿控制角色進行八方位移動,並按照各方位播放對應移動動畫
效果圖如下:

本次案例其實都是拼湊網上別人的一些現成程式碼,然後進行整合梳理

涉及到的相關內容如下:

參考程式碼如下:
1.Cocos Creator 地圖滾動&攝像機人物跟隨
地址://www.bilibili.com/video/BV1et411J7iC
2.joystick搖桿控制項
程式碼地址://github.com/YunYouJun/cocos-creator-joystick
在線演示://www.yunyoujun.cn/cocos-creator-joystick/
3. Animation動畫創建
教程地址://www.cocoachina.com/bbs/read.php?tid-458312.html
我其實也只是程式碼的搬運工,通過對以上三部分的整合,最終就實現了我想要的效果。

開始介紹項目

場景結構


場景中分別包含了以下控制項:

  • MainCamera 負責繪製UI
  • RoleCamera 負責繪製角色(之後的遙感其實也是控制這個攝影機的坐標移動)
  • MapView 地圖(裡面包含了一些地圖相關的內容,在參考程式碼裡面的影片有做解釋,我這裡不做詳細介紹了)
  • Role 主角,主要的控制項,相關的控制程式碼都掛在主角上面
  • joystick 搖桿控制項,該部分程式碼可以直接通過參考程式碼2去下載,然後直接使用即可。

程式碼結構


其實需要講解的程式碼也就兩部分:joystick.js 與Role.JS

Joystick組件

屬性(Properties)

  • dot :搖桿操縱點
  • ring :搖桿背景節點
  • joystickType :觸摸類型(跟隨,固定兩種)
  • directionType :方向類型(4方向,8方向,全方位)
  • _stickPos :搖桿所在位置
  • _touchLocation :觸摸位置

函數(Functions)

  • _initTouchEvent : 初始化
  • _onChangeJoystickType : 更改觸摸類型
  • _touchStartEvent : 當手指按下時觸發,判斷觸摸類型,並根據觸摸類型執行相應動作
  • _touchMoveEvent : 當手指按住搖桿控制項時持續觸發,先判斷按下的位置是否相同,如果相同,則不做處理。
  • _touchEndEvent : 當手指抬起時觸發,結束相關動作

Role組件

主要函數(Functions)

  • _updateCameraPosition :更新攝像機位置
  • _getTilePos : 計算搖桿角度
  • onTouchMove : 按住搖桿時持續觸發
  • getCalculaAngle : 將搖桿移動的坐標進行角度轉換,轉換之後用來判斷朝哪個方向移動了
  • getfwinfo : 根據角度判斷角色應該朝哪個方向
  • move : 移動攝影機
  • update :

主要邏輯順序

當用戶按住搖桿時觸發onTouchMove 事件,判斷移動方向,切換角色動畫。

最後就是貼程式碼了
鏈接://share.weiyun.com/8WRBYpR5 密碼:jny2wj

接下來準備實現技能按鈕部分,也不知道可以不可以實現,如果各位有好的參考程式碼也歡迎各位提供我學習參考下,謝謝