FC2ブログ
    11 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 01

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Unity2018から使えるという噂のSpriteShaderを触ってみた。細かい話は分からないけど、簡単になんかができた。 

    こんにちは。クリスマスです!
    皆さま如何お過ごしでしょうか?

    もう年末っすよ!
    今年も色々ありましたね・・・前作ってたハクスラの開発を止めて、今新しいゲームつくってますしおすし。



    今回もまた本気モードですが、完成予定は来年末。
    途中で力尽きないようにしないといけません。
    さて、来年は生き抜けるのでしょうか?

    んではUnityのお話。

    使ったこともないし、今のところ使う予定もないSpriteShapeのお話。

    【導入方法】
    Window>PackageManagerからSpriteShapeをInstall



    【使い方】
    ①SpriteShapeの設定
     フォルダの中でCreate>Sprite Shape Profile>Strip


    ②SpriteShapeにSpriteを設定
     ①で作ったProfileのSpriteに表示したいSpriteを設定


    今回はこんな感じのチップマップの素材を選択。


    こんな状態になります。


    ③2Dオブジェクトを生成
     Hierarchyで右クリックをして、2Dオブジェクト>SpriteShapeを選択


    こんなオブジェクトができました。


    こちらにあるPointModeを使ってこのオブジェクトの形を変えていきます。


    結果、こんなオブジェクトが完成!


    このオブジェクトに2D Edge Colliderを追加し、UpdateColliderにチェックを入れると、オブジェクトの形にEdgeColliderが沿うように設定されます。



    さて、Sphereを置いて、2Dのコライダーに変えてみました。





    うごいたー!

    すげー!

    って感じで、分かりにくいですが、こんな簡単に1つの絵から道がつくれました!

    ってことで、アクションゲームのステージとか作るのに良さそうですね。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Visual Studioでenumを条件に使ったswichを書くときに便利な方法。 

    こんにちは。
    大坂です。

    今週も短く・・・Visual Studioでenumを条件に使ったswichを書くときに便利な方法。

    簡単に言うと「swich」と打って「Tab」を2回押して、
    (switch_on)の「switch_on」をenumの変数に変えて「Enter」を2回押すだけです。
    こんな感じで出てきます。


    caseをわざわざ全部書くのも面倒くさいのでよく使ってます、結構便利ですよ!
    では超短いですがこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】uGUI.TextとTextMeshProにグラデーションをかけたい!文字にグラデーションを掛けるの意外とめんどいね・・・ 

    こんにちは。坂内っす。

    Unityで文字にグラデーションを掛けたいと思うことありませんか?
    意外と簡単そうで、めんどいグラデーション。

    上の文字がuGUIのText、下の文字がTextMeshProになります。


    これを基に、グラデーションを試してみましょう。

    [TMPの場合]
    TMPにはグラデーションが初めから用意されています。

    TMPのここにある「Color Gradient」にチェックを入れると、グラデーションのカラー設定が出てきます。



    この設定だとこんな感じになりますね。



    横にグラデーションを書けるとこんな感じ。


    [uGUI.Textの場合]
    デフォルトのままでは無理なんで・・・・

    https://github.com/azixMcAze/Unity-UIGradient

    こちらにあるUIGradientを使うと、グラデーションが可能になります。



    こんな感じ。
    Angleをいじると、グラデーションの角度が変わります。


    [ふたたびTMP]
    Textの方のグラデーションでやったように、TMPでもこうしたい!
    (TMPの横グラデーションだと1文字ずつのグラデーションになって、全体での横グラデーションができない!)



    そして、TMPだとUIGradientが使えない!

    こんな時はMaskを使います。
    ①まずはこんなグラデのかかってる1枚絵を用意します。


    ②uGUIのImageとして①のグラデの絵を作成し、TMPの子供として配置する。


    ③TMPにMaskコンポーネントを追加。




    こんな感じで、キレイに横グラデーションがTMPにかかりました。

    なんかもっと簡単な方法ありそうなんだけどね・・・・・・

    ということで、文字にグラデーションをつける方法でした!

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】ボタンの長押しとかが使えるButtonExが便利 

    こんにちは。
    大坂です。

    だいぶ冬っぽい気温になりましたね。
    しばらく暖かったので余計に寒く感じる気もします。

    今週は人が作った便利なボタンの紹介。
    ButtonExってやつ。
    ここからダウンロードできます。
    https://github.com/mob-sakai/ButtonEx

    ボタンで長押しとか実装する時に自分で作らなくてよくなります。
    インポートしてあげて、普通にボタンを作って、ボタンコンポーネントのところを右クリックすると、
    「Convert To ButtonEx」っていうのがあるのでそれを選ぶとボタンが変わります。


    こうかわりますね。


    そのままだとクリックだけなのでEventTypeでHoldを追加してみます。


    Holdが追加されました。


    Holdが追加されるので後はClickとHold用のメソッド作って適当に設定してみます。
    とりあえずログ出すだけ。
        public void Click() {
    Debug.Log("Click");
    }

    public void Hold() {
    Debug.Log("Hold");
    }

    1秒押して離すと。


    Clickのほうも動きますね。
    まぁこの辺は自分でいくらでも対応できるとは思いますが、離してクリックが反応するならと言った感じの適当対応。
        bool holdFlg = false;

    public void Click() {
    if(!holdFlg) {
    Debug.Log("Click");
    } else {
    holdFlg = false;
    }
    }

    public void Hold() {
    Debug.Log("Hold");
    holdFlg = true;
    }

    これで1秒押して離したタイミングではログにClickは出ませんね。
    その後に普通にクリックしてたらちゃんとClickのログが出ます。

    と、便利なのがあったので紹介でした!
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】PAPことPixel Art Parkにいってきたよ!(初) 

    こんにちは。坂内っす。

    昨日は「日本最大級のドット絵の祭典」こと、Pixel Art Parkにいってきたよ!
    https://pixelartpark.com/



    その名の通り、ドット絵のイベントです。今回5回目?ということで、結構長くやってるイベントなんすね。
    ゲームのイベントとかはよく行ってるんですが、アート系のイベントってそんなに興味がなくて今まで行っていなかったんですが、今回は遊びに行ってみました。

    正直な感想、どこのブースもすごかった!

    さて、いつも通りペタペタ写真を載せていきますが、掲載不可のがあったら@zabosamaまでご連絡下さいまし。

    まず入口すぐのところにあった「エイリム」さんのブース。
    ソシャゲの"ブレイブフロンティア"作ってるところですね。
    こんな素敵な設定資料が置いてあってじっくり見てしまった。


    そして、近くにあった「HECATONCHEIR」さんのブース。
    いやー すげーすげー 
    全然分からない世界だけど、スゲーのはわかる!
    なんなんすかねほんと。


    そして「シロス」さんのブース。
    お菓子や食べ物の可愛いマグネットが色々あった!


    はい、やってきました「ハフハフ・おでん」さんのブース。


    幻の作品「サムライ地獄」と我らがシンイチさんの「World for Two」のゲームとグッズ達。
    これ買っちゃいました。
    ↓↓↓




    流石椎葉さん素敵な曲っすね!

    「いたのくまんぼう」さんのブース。
    新作のゲームがががががということで、見にきましたよ。
    さすがは和尚の魂込めた新作!




    タップゲー+町作りゲーらしいっす!
    街が発展していくとちっこい車や人がちょろちょろ動いてて見てて楽しい感じ!!
    こいつはリリースが楽しみですね!

    「saino」さんのブース。


    本人に会えなかった!(あとで帰る時に会いました)
    写真に移ってるピンバッチ以外ほぼ売り切れでしたよ!
    さすがや・・・・

    そしてお隣の「achabox」さんのブース。


    ほんとsainoさんといい、achaさんといいイベントの度に関西からくるのパワフルすぎる!
    可愛いキャラが目白押しの"ことだまっち"という育成ゲーム。

    ほんとデザイナーさんのこういうセンスがすごいと思う。

    ということで、PAPもなかなか楽しめましたね!

    また次回いってみようかな?どうかな?

    ではあでゅ~ノシ

    Category: その他日記

    tb 0 : cm 0   

    【ハルシオンブログ】今週もちょこちょことC#の話・・・ 

    こんにちは。
    大坂です。

    火曜とか暑くて、今日寒いですね・・・。
    明日また暖かくなって土曜日から寒くなるという寒暖差が激しいので皆様体調にはお気をつけを。
    僕はなんだか知りませんが、猛烈な腹痛です・・・orz

    はい!今週もネタがないので適当なやつです!

    ①Null非許容型を許容型に
    Nullが入らない方にNull入れられるようにするってやつですね。
    DBとか使っててNullが入るときなんかは使うかも?まぁそんなデータ作らなければいいんですが。
    型の前に?を書くだけです。
    DateTime? date = null;
    DateTime time = date.HasValue ? date.Value : DateTime.Now;


    Null許容型にするとHasValue が使えるようになって基になる型の値が含まれるかどうかが判定できる感じらしいです。

    ②オプション引数
    引数にデフォルト値を与えておくやつ
        void Start() {
    Test();
    Test(10);
    }

    void Test(int i = 0) {
    Debug.Log(i);
    }

    指定しなかったら0で処理してくれます。
    最近は後からメソッドに引数を追加するときによく使ってますかね。

    ということで今日もこの辺でノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】ボタンを押すと一定時間押せなくなるボタン。カウントダウンもつけてみたよ 

    こんにちは。坂内っす。

    今日はUnityでこんな感じの事をしたい時の方法。



    ちょうど今作ってるゲームで「スキルを使用するとクールダウン中はスキルが再使用できない」的なことを作ってたので、紹介です。

    まずは、CanvasにImageを置き、Buttonコンポーネントもつけます。
    Imageの「Image Type」をFilledにして、「Fill Method」うぃRadial360にしておきます。



    ついでに、残り時間を表示するTextも置いておきました。

    んで、コードはこちら。
    (いつも通り汚いコードですがあしからず)

    [Script20181203.cs]
    using UnityEngine;
    using UnityEngine.UI;

    public class Script20181203 : MonoBehaviour {
    [SerializeField]
    GameObject objButton; // Image+Buttonのオブジェクトをアサイン
    [SerializeField]
    Text lblText; // 残り時間を表示するTextオブジェクトをアサイン

    Image imgButton;
    Button btnButton;

    // 何秒でボタンが再アクティブになるか
    const int COUNT = 10;
    int countTime;

    // ただのタイマー
    float timer;

    private void Awake() {
    imgButton = objButton.GetComponent<Image>();
    btnButton = objButton.GetComponent<Button>();
    }

    /// <summary>
    /// ボタンを押した時の処理
    /// </summary>
    public void OnClickButton() {
    countTime = COUNT;
    }

    private void Update() {
    timer += Time.deltaTime;
    // 毎秒処理
    if(timer > 1f) {
    timer = 0f;
    if(countTime > 0) {
    countTime--;
    lblText.text = countTime.ToString();
    imgButton.fillAmount = 1 - (float)countTime / (float)COUNT;
    btnButton.interactable = false;
    } else {
    lblText.text = "";
    btnButton.interactable = true;
    }
    }
    }
    }


    ①ボタンを押した時にcountTimeをセット。
    ②Updateで1秒に1回、以下の処理をする。
     countTimeが0じゃない限り-1をして、秒数を表示。
     とともに、ImageのfillAmountを指定。
     また、カウント中はボタンのinteractableをFalseにすることで、ボタンを押せないように制御
     
    やっているのはこれだけです。

    これをベースに色々といじると面白いボタンとか作れそうですね!

    ってことで、今日はここまで!あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0