Unity

【Unity】RobotKyleでいろいろ~その4~ レーザーソードを持たせる

投稿日:2020年10月9日 更新日:

概要

前回はRobot Kyleにキーボードで基本動作ができるようにしましたが、今回はRobotKyleに武器(レーザーソード)を持たせたいと思います。

環境

Windows10
Unity 2020.1.f1

Step1 : レーザーソードの調達

まずはRobot Kyleに持たせる武器の調達をします。Asset Storeにはハイクオリティな武器が無料でたくさんありますが、今回は宇宙戦争っぽさを出そうとおもったのでRobot Kyleにレーザーソードを持たせようと思います。
いろいろ探したところ、こちらを使わせてもらうことにしました。

https://github.com/jjxtra/UnityLaserSword

The MIT License (MIT)
Copyright (c) 2016 Jeff Johnson
https://github.com/jjxtra/UnityLaserSword/blob/master/LICENSE

githubからダウンロードしたLaserSwordをUnityのAssetsの配下にimportします。windowsのディレクトリからドラッグ&ドロップで持ってこれます。

武器の調達は以上です。

Step2 : レーザーソードを持たせる

続いてLaserSwordをRobotKyleに持たせていきます。今回は一番手っ取り早い音やスクリプトもついたprefabを使用します。

LaserSwordフォルダの下にあるLaserSwordPrefab.prefabをドラッグ&ドロップでRobot Kyle > Ribs > Right_Shoulder > Right_Upper_Arm_joint1 > Right_Forearm_Joint1 > Right_Wrist_Joint_01の下にアタッチします。

次にLaserSwordのInspectorを調整していきます。

Transformはデフォルトだと刃先が変な法にでるので、Rotationなどもいい感じに調整してあります。

XYZ
Position0.0700
Rotation-9000
Scale0.30.30.3

Glow Intensity,Glow Power, Glow Sclaeレーザーソードのレーザーの部分の雰囲気なので、実物みながら好きなように調整という感じです。

Activation TimeはレーザーソードをONしてから完全に刃先まで出るまでの時間です。デフォルトだと少し遅かったので、0.2にしました。



Step3 : レーザーソードをON/OFFする

今回使用しているLaserSwordのPrefabはレーザーソードをOn/Offするためのメソッドが内包されています。これはpublicとして定義されているので外部のスクリプトから呼び出して使うことができます。そこで以下のようなLaserSwordをOn/Offするスクリプトを作成しました。

主な動きは以下です。

  • GameObject.FindでLaserSwordPrefabを取得
  • laserswordObj.GetComponent<DigitalRuby.LaserSword.LaserSwordScriptでLazserSwordのスクリプトを取得
  • Cボタン押下→レーザーソードON(Activate())、withSwordOnをtrueにする
  • 再度Cボタン押下→レーザーソードOFF(Deactivate())、withSwordOnをfalseにする
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LaserOnOff : MonoBehaviour
{
    //LaserSword
    GameObject laserswordObj;

    bool withSwordOn = false;

    // Start is called before the first frame update
    void Start()
    {
        //Find Sword Object
        laserswordObj = GameObject.Find("LaserSwordPrefab");
    }

    // Update is called once per frame
    void Update()
    {
        DigitalRuby.LaserSword.LaserSwordScript laserSwordScript = laserswordObj.GetComponent<DigitalRuby.LaserSword.LaserSwordScript>();

        if (Input.GetKeyDown(KeyCode.C) &amp;&amp; !withSwordOn)
        {
            laserSwordScript.Activate();
            withSwordOn = true;
        }


        if (Input.GetKeyDown(KeyCode.C) &amp;&amp; withSwordOn)
        {
            laserSwordScript.Deactivate();
            withSwordOn = false;
        }


    }

これをRobot Kyleにアタッチし、GameをStartして、Cボタンを押すと最初のgif動画のような動きになります

まとめ

今回はRobot Kyleにレーザーソードをを持たせてON/OFFするところまでを実践しました。次回はレーザーソードを振り回すアニメーションをつけ足していきたいと思います。

-Unity

執筆者:


  1. […] 【Unity】RobotKyleでいろいろ~その4~ レーザーソードを持たせる […]

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Unity】 Standard Assetsのダウンロードとインポート

Contents1 目的2 環境3 Step1 : Asset Storeを開く4 Step2 : Standard Assetsのインストール5 まとめ 目的 UnityでStandard pack …

【Unity】mixamoのアニメーションが動かない場合の対処

Contents1 概要2 環境3 最初にやったこと3.1 FBXのダウンロード3.2 インポートとRigの設定4 困ったこと5 原因と対処方法6 分かったこと 概要 ハイクオリティな3Dキャラクター …

UnityでPostProcessManager.cs(425,66): error CS0117: ‘EditorSceneManager’ does not contain a definition for ‘IsGameObjectInMainScenes’が出た時の対処法

Contents1 概要2 環境3 発生状況4 対処方法5 まとめ 概要 UnityのAsset StoreからParticle Packageをダウンロードしてimportしたところ、以下のエラーが …

UnityでAnimationEvent ‘Hit’ on animation ‘Attack1’ has no receiver! が出た時の対処

Contents1 概要2 環境3 発生事象4 対処法4.1 Animationのコピー4.2 Hitイベントの削除4.3 再度Gameで確認 概要 Unity Asset StoreでFreeのAn …

【Unity】Visual Studio モジュールをインストール

Contents1 目的2 環境3 Step1 : UnityHubからVisual Studioモジュールをインストール4 Step2 : UnityでVisual Studioを開発環境として設定 …

言語切り替え

カテゴリー