そんなことよりすしたべたい

ゲーム開発やイラストを描いたり 現在2Dアクションシューティング「朝はどこ」、進化シューティングゲーム「ネコノイア」開発中

Anyportraitでゲームに用いた実装

これはUnity アセット真夏のアドベントカレンダー 2020 Summer!9日目8月9日の記事です。

 

ゲームに用いたスクリプトを用いる実装について書きます。

中級者向けの記事になります。

AnyPortraitとはキャラなどに骨などを設定してアニメーションさせるアセットです。

近いアセットやソフトでいうとAnima2DやSpineなどです。

 

できることの一例

ボーン作成、メッシュ変形、物理動作などなど

 

 

初心者向け解説とかもしたかったのですがちょっと量的にでかくなりそうだったので割愛します。

エディタが日本語対応していたり公式から日本語のチュートリアルが出てたりするので公式おすすめ

公式HP

https://www.rainyrizzle.com/anyportrait-jp

とても素晴らしい 

 

開発環境

Windows

Unity2019.4.4f1

 

何をしたか

 

スクリプトで設定した座標に頭や座標を向かせる

アクションシューティングゲームとかでよくある照準の方向に腕や頭を向かせるやつ

 

 

f:id:tolune:20200808071600g:plain



 

使用した機能

IKコントローラー設定

position・・・エフェクター骨まで移動させる(ボーンの移動範囲外には移動しない)

LookAt・・・エフェクター骨の方向に回転させる

 

参考資料

公式チュートリアル:骨のIKコントローラ

https://www.rainyrizzle.com/apam-boneikcontroller-jp 

やりかた

f:id:tolune:20200808073238g:plain

f:id:tolune:20200808071518g:plain

  1. エフェクター骨用のボーンを作成 今回は親ボーンを外しておく
    左ウィンドウからメッシュグループを選択
  2. 右のメッシュグループウィンドウから骨を押して骨を編集を押す
  3. 移動・回転させたいボーンを選択
  4. 右のIKコントローラーの設定をNoneからLock Atまたはpositionを選択する(今回は頭はLockAt 両腕はPositionを選択した)
  5. エフェクター骨(移動させる・向かせる場所になるボーン)を選択
  6. デフォルトのFK/IK重量を1にする これが0だとOFFで1だとON(制御パラメーターでスクリプトでONOFFやアニメーション毎にONOFFなどもできるがここでは割愛する)
  7. ベークする
  8. こんな感じで狙いたいゲームオブジェクトを作成する今回はTargetという名前を付けたゲームオブジェクトを作った
    f:id:tolune:20200808074405j:plain 
  9.  こんな感じのスクリプトC_CharaMainを作ってキャラクターのゲームオブジェクトか何かに付ける

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

    public class C_CharaMain : MonoBehaviour
    {

    public apPortrait m_CharaApPortrait;

    public Transform m_TargetTrans;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
    m_CharaApPortrait.Play("Move", 1, apAnimPlayUnit.BLEND_METHOD.Interpolation, apAnimPlayManager.PLAY_OPTION.StopSameLayer, true);

    m_CharaApPortrait.SetBonePosition("Target", m_TargetTrans.position, Space.World);

    }
    }

     

    SetBonePosition("Target", m_TargetTrans.position, Space.World);でエフェクター骨用のボーンの座標をスクリプトから移動してる


  10. 付けていくf:id:tolune:20200808081248g:plain


    こうなる

    f:id:tolune:20200808075823g:plain

    Targetゲームオブジェクトの方向にキャラの頭が向いて腕が移動するまでができた
    回転制限がないので頭が一回転する

  11. 頭の角度を制限

    f:id:tolune:20200808080256g:plain

    骨の編集画面からボーンを選択して無効な制約をクリック
    出てくるピンク色の線が制限角度なのでこれを見ながら角度の最小値最大値を設定する

  12. 完成

    f:id:tolune:20200808071600g:plain

    あとはマウスでターゲットを動かすなりキャラを動かすなり 

 

現在AnyPortraitを使用してこういうゲーム開発しています。

おすすめです。