Unity Joy-Con 教學

任天堂推出的 Switch 遊戲主機的 Joy-Con 控制器可提供多種創意玩法:

本教學介紹使用 Unity 遊戲引擎搭配 Rin-Con 健身環製作運動遊戲,遊戲的互動操作方式為:

Joy-Con 左控制器用於擺動時將玩家角色向前推進,並播放走動的動畫。

Joy-Con 右控制器用於控制玩家角色轉向、射擊,與遊戲基本操作功能。

製作這種運動類遊戲可以使用 Arduino 開發板 + MPU 6050 陀螺儀 + 藍牙無線模組 + 電池模組的方式,但是 DIY 組裝並不容易製作體積小的控制器,並且需要解決穿戴的問題。使用 Joy-Con 控制器可以跳過硬體開發部份,將更多心力投入遊戲內容的製作。

 

首先將 Joy-Con 與電腦配對連接,執行 [ Windows 設定 > 裝置 > 藍牙 ] 再點選 [ 新增藍牙或其他裝置 ] 配對搖桿。

執行 [ Windows 設定 > 裝置 > 藍牙 ] 再點選 [ 新增藍牙或其他裝置 ] 配對搖桿。

新增裝置,點選藍牙再選擇 Joy-Con 輸入裝置。

Joy-Con (L) 已配對後按下完成。

接著以相同步驟配對 Joy-Con (R)

回到 Windows 設定視窗確認 Joy-Con 左右手控制器配對成功。

 

匯入 Unity Joy-Con 資源包

為了透過 Joy-Con 控制器操控 Unity 遊戲,將使用第三方 Unity Joy-Con 開發工具

https://github.com/Looking-Glass/JoyconLib/releases

從 GitHub 網站下載 JoyconLib06.unitypackage 資源包,匯入 Unity 專案。

 

首先透過 JoyconLib06 提供的範例場景,瞭解如何從遊戲抓取 Joy-Con 控制器製作各種互動功能。

開啟 Scenes 資料夾的 Scene1 場景,按下 Play 測試,場景中的方塊將隨著 Joy-Con 控制器轉動。

注意!若場景的方塊消失並出現 No Joy-Cons found! 訊息,檢查 Joy-Con 控制器是否正常連線。

選取 JoyconManager 物件,透過 Inspector 可看到套用的 Joycon Manager (Script) 腳本元件,這是必要的控制元件。

選取 Cube 方塊物件,此物件的 Joycon Demo (Script) 腳本元件,其中的 Jc_ind = 0 代表對應到 Joy-Con 左手控制器。

選取 Cube 2 方塊物件,此物件的 Joycon Demo (Script) 腳本元件,其中的 Jc_ind = 1 代表對應到 Joy-Con 右手控制器。

==============================

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour
{
public GameObject target;
public Rigidbody rb;
public float power;

void Start()
{
rb = target.GetComponent<Rigidbody>();
}

void OnTriggerEnter(Collider other)
{
rb.AddForce(Vector3.forward * power);
}
}

==============================

Joy-Con.zip

JoyconDemo_Left.cs

JoyconDemo_Right.cs

 

 

製作玩家角色

自行製作遊戲角色模型並套用骨架,也可以從 Asset Store 資源商店或 Mixamo 網站下載。

本教學使用 Mixamo 網站提供的忍者模型,另下載待機、跑步、跳躍的動作檔。

Ninja@T-Pose , YBot@T-Pose , YBot@Idle , YBot@LookAround , YBot@NinjaRun , YBot@Jump , YBot@Death

建立一個空物件,重新命名為 "Player" 套用 Rigidbody 剛體元件,將遊戲角色曳到 Player 當作子物件。

 

從 Github 網站下載 JoyconLib_plugins 匯入專案。

從原本的 JoyconDemo.cs 腳本修改程式碼,建立以下 2 個控制器用的腳本。

JoyconDemo_Left 程式碼:(請參閱下方)

JoyconDemo_Right 程式碼:(請參閱下方)

建立 2 個空物件,重新命名為 Left 與 Right 再套以剛才建立的 C# 腳本:

為 Left 物件套用 JoyconDemo_Left.cs 腳本,並透過 Inspector 設定 Jc_ind = 1 。

為 Right 物件套用 JoyconDemo_Right.cs 腳本,透過 Inspector 設定 Jc_ind = 0 。

將要控制的遊戲角色拖曳到 P / Player 欄位。

按下 Play 測試遊戲,玩家角色應該可用 Joy-Con 控制 Unity 遊戲角色的移動,但需要再加上移動的動畫。

 

加上移動的動畫

選取遊戲角色的原始 FBX 檔案,設定 Animation Type = Humanoid 動畫型態。設定材質使用 Legacy 模式。

注意!動作 FBX 檔案也需要設定 Animation Type = Humanoid 動畫型態,否則動作將無法提供給主要的角色使用。

建立一個動畫控制器並命名為 Player Animator Controller ,指定給遊戲角色。

~

加入 Idle 待機動畫,按下 Play 測試遊戲,確認遊戲角色呈現正確的待機動作。

新增 Idle 待機與 Walk 走路動作,建立動作之間的轉換箭頭。

拖曳到 Player Animator Controller 動畫控制器。

切換到 Parameters 新增 Speed (Float) 參數。

選取從待機到走路動作的箭頭,取消 Has Exit Time 設定條件 Speed > 0.1

選取從到走路待機動作的箭頭,取消 Has Exit Time 設定條件 Speed < 0.1

新增 Speed (Float) 與 Attack (Trigger) 參數,用於播放移動與攻擊的動畫。