読者です 読者をやめる 読者になる 読者になる

【ジョーカースクリプト】揺らしエフェクト改

既に年が明けてから一月と少し経っていますが、あけましておめでとうございます。

ふくともです。

 

以前作ったジョーカースクリプト用の揺らしタグですが、少し手を加えて振れ幅/時間に任意の値を指定できるように改良しました。

 

ファイルの配置位置等は以前の記事をご参照ください。

q-fukutomo.hatenablog.jp

 

今回のタグを呼び出す際には

[quake x=◯ y=△ time=□]

と書いてください。

 

以下、改良後のコード

// QuakePluginComponent.cs
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;

namespace Novel{
    public class QuakeComponent:AbstractComponent{
        public QuakeComponent(){
            this.originalParam = new Dictionary<string,string>{
                {"x","1.5"},
                {"y","1.5"},
                {"time","5.0"}
            };
        }

        GameObject target = GameObject.Find("MainCamera");

        public override void start(){
            double x = double.Parse(this.param["x"]);
            double y = double.Parse(this.param["y"]);
            float time = float.Parse(this.param["time"]);
            iTween.ShakePosition(target, iTween.Hash("x",x, "y",y, "time",time));
            this.gameManager.nextOrder();
        }
    }
}

 

GitHubからダウンロードもダウンロード可能です。

github.com

 

このページでのソース中で水色で書かれている部分が以前との差分になります。

 

まずpublic QuakeComponent(){ };の中。

this.originalParamにx,y,timeの3つの値を受け取ります。

Dictionary<string,string>は二つの文字列を格納するコンテナで、第一要素が変数名、第二要素がデフォルト値になります。

このDictionary<string,string>をList<string>に置き換えると要素は変数名だけになり、その引数が必須になります。

今回はx, y, timeの3つの引数を持ち、それぞれのデフォルト値が1.5, 1.5, 5.0、3つとも引数を与えるかは任意、ということになります。

 

次にpublic override void start(){ };の中。

double型のx,yとfloat型のtimeに引数で与えられた値を代入します。

Dictionary<string,string>とあるようにこの時paramに入っているデータはstringクラスのものなのでdouble.Parse(), float.Parse()でそれぞれの型に変換(キャスト)して代入します。

 

最後に iTween.ShakePosition( );です。

前回は固定の値を入れていたところに今回は引数を受け取った変数を使うので、値ではなく変数名を書きます。

 

補足。

x,yの単位はピクセルではないようです。(Unity側の仕様かと思われます)

画面中心がx==0, y==0となっていて、

目安としては

・x==15.4で画像が画面右側

・x==-15.4で画像が画面左側

・y==9.2で画像が画面下側

・y==-9.2で画像が画面上側

にそれぞれ見切れるようです。

 

timeには秒数を入力してください。

 

以上です。

2016/02/05 Fri.