FC2ブログ
    12 «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.» 02

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

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

     

    【ハルシオンブログ】Unityで円の中のランダムな座標をとってくれる関数?変数?があるってよ? 

    こんにちは。坂内っす。
    寒い日が続きますね!
    風邪に気を付けて暖かくしていきましょう!

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    オブジェクトを中心点から一定の半径内に生成するということをしたい!

    って時は、Random.insideUnitCircleを使うといいらしいですよ。



    こんな感じで、真ん中に■を置いて、その半径●の中にImageを置くようにしてみます。
    また、スペースキーを押すと、真ん中の■を中心にImageを再生成します。
    半径がわかりやすいようにGizmosも出しています。

    [Blog0129.cs]

    using UnityEngine;

    public class Blog0129 : MonoBehaviour
    {
    [SerializeField] private Transform trnCenterPosi;
    [SerializeField] private GameObject objImage;
    [SerializeField] private float radius;
    [SerializeField] private Transform randomPlace;
    int objCount = 10;
    Vector2 centerPosi;

    void Start()
    {
    MakeRandomObject();
    }

    private void Update() {
    if (Input.GetKeyDown(KeyCode.Space)) {
    MakeRandomObject();
    }
    }

    void MakeRandomObject() {
    foreach (Transform trn in randomPlace) {
    Destroy(trn.gameObject);
    }

    centerPosi = trnCenterPosi.position;
    for (int i = 0; i < objCount; i++) {
    var pos = radius * Random.insideUnitCircle;
    Vector2 spawnPosi = new Vector2(pos.x, pos.y) + centerPosi;
    Instantiate(objImage, randomPlace, false).transform.position = spawnPosi;
    }
    }

    private void OnDrawGizmos() {
    Gizmos.color = Color.red;
    Gizmos.DrawWireSphere(centerPosi, radius);
    }
    }





    Random.insideUnitCircle;
    これを指定してあげると、中心点から半径●の間でランダムに座標を求めることができます。

    使う機会ないかもしれませんが、便利なstaticな変数ですよね。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】OdinInspectorのShowIfが意外と便利? 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    OdinInspectorのShowIfが意外と便利ですね。
    条件を達成した時にInspectorに表示してくれます。

    書くのはこんな感じです。

    public bool testFlg;

    [ShowIf("testFlg")]
    public int testNum;



    Inspectorでの表示


    testFlgにチェックを入れるとtestNumが表示されてますね。
    データを作るときとかの条件がある場合の入力に使えますね。
    必要ないときは表示されないので見やすくなったりしますし。

    ではでは、こんな機能があるよということでしたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】DotweenのシーケンスがPlayをしなくても勝手に動いてた謎。あれ?知らないの俺だけだった? 

    こんにちは。坂内っす。
    なんか今日は暖かいですね。
    このまま暖かい日が続けばいいのですが・・・・

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    DoTweenのシーケンスの謎。
    Sequenceって作ると勝手にうごきません?

    今までずっと謎だったんですよね。

    こんな画面で、


    こんなコード書くと

    [Blog0122.cs]

    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;

    public class Blog0122 : MonoBehaviour
    {
    [SerializeField] GameObject imgWhite;
    [SerializeField] Button btnStart;

    Sequence sequence;

    void Start()
    {
    sequence = DOTween.Sequence()
    .Append(imgWhite.transform.DOLocalMoveX(100f, 1f))
    .Append(imgWhite.transform.DOLocalMoveY(1f, 1f))
    .Append(imgWhite.transform.DOLocalMoveX(1f, 1f))
    .Append(imgWhite.transform.DOLocalMoveY(100f, 1f))
    .Append(imgWhite.transform.DOScale(3.5f, 0.3f));

    btnStart.onClick.AddListener(MoveWhite);
    }

    void MoveWhite() {
    sequence.Play();
    }

    }



    実行したときに勝手に動きますよね。
    ボタン押されたときにPlayってやってるのに・・・・



    これちゃんとDoTweenのInitして自動で動かない設定をしてあげるといいらしいです。


    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;

    public class Blog0122 : MonoBehaviour
    {
    [SerializeField] GameObject imgWhite;
    [SerializeField] Button btnStart;

    Sequence sequence;

    void Start()
    {
    DOTween.Init();
    DOTween.defaultAutoPlay = AutoPlay.None;


    sequence = DOTween.Sequence()
    .Append(imgWhite.transform.DOLocalMoveX(100f, 1f))
    .Append(imgWhite.transform.DOLocalMoveY(1f, 1f))
    .Append(imgWhite.transform.DOLocalMoveX(1f, 1f))
    .Append(imgWhite.transform.DOLocalMoveY(100f, 1f))
    .Append(imgWhite.transform.DOScale(3.5f, 0.3f));

    btnStart.onClick.AddListener(MoveWhite);
    }

    void MoveWhite() {
    sequence.Play();
    }

    }



    DOTween.Init();
    DOTween.defaultAutoPlay = AutoPlay.None;

    この2行を入れてあげるとちゃんとボタン押したときに動くようになります。
    また、Initをしないと初めの動き出し時にカクカクってなってたのがなくなります。




    これ知らんかったです。

    DoTween使ってるみんなは知ってた??

    DoTween.Initのお話でした。


    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】RiderでTODOリストを確認する 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    Riderでプロジェクトの自分が残したTODOを確認したい時にどこでリストを開くのかというだけのお話です。
    左にある3点リーダーメニューの中にあるのでその中のTODOを選ぶだけですね。


    こんな感じで表示されます。


    メニューを一通り見てパッと見つからなかったのでメモ的な感じです。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】UnityでAnimationを行ってるときに、リセットをしたかったんだけどPlayだけではリセットできなかったよ? 

    こんにちは坂内っす。
    今年もよろしくお願いします。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    アニメーションをAnimationで動かしているときに、リセットをする方法。

    色々調べたけど

    Animator.Play(ステート名);

    でできるとのこと。

    こんなコードを書いて、ボタンを押したらリセットするようにしてみた。

    [Blog20240115.cs]

    using UnityEngine;
    using UnityEngine.UI;

    public class Blog0115 : MonoBehaviour
    {
    [SerializeField] Button btnChange;
    [SerializeField] Animator animator;

    void Start()
    {
    btnChange.onClick.AddListener(() => ChangeAnimation());
    }

    void ChangeAnimation() {
    animator.Play("anim");
    }
    }





    リセットされなあああーーーーい!!!


    なんでかリセットされません。


    で、リセットする方法としては、Playの時の引数に時間を設定すればできました。

    void ChangeAnimation() {
    animator.Play("anim", -1, 0f);
    }





    これでリセットできました!

    ほかにもidleの何もしていないステートを作成し、そこからanimへ遷移するようにしたうえで、Play("idle") とかすればできるようです。


    ということで、Animationをリセットする場合の方法でした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】スクリプトから端末のスリープ設定を変える 

    明けましておめでとうございます。
    今年もハルシオンブログをよろしくお願いします。


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    アプリ側で一時的に端末の自動スリープを無効にしたいときなんかありますかね?
    そんな時にスクリプトから設定を変える方法です。

    // 自動スリープ無効
    Screen.sleepTimeout = SleepTimeout.NeverSleep;

    // 端末で設定されている一定時間でスリープする
    Screen.sleepTimeout = SleepTimeout.SystemSetting;


    これだけですね。
    ボタンなどに設定して切り替えてあげるとか、スリープにしたくないタイミングで変更してあげるといいですかね。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0