2023年6月11日日曜日

chtGPTより参考書が役立ったパターン

GPTのコードでうまく衝突判定がいかず、何度か質問したがなかなか解決しない。
結局、参考書で調べたら、3Dと2Dでは、イベント検知のメソッドは微妙に違うことを発見。
2Dでは、void OnTriggerEnter2D(Collider2D other)のようにするといいようです。2Dと3Dの間違いまでは、chatGPTは想定してなかったようだ。
 コリダーだけでなく、RigidBodyも追加しないと感知しないことにも注意必要。

DragAndDropで苦労する

 タブレットでDragAndDropを使いたくて、最初はELMで試したが、Windowsではうまくいっても、タブレットなどのタッチ操作はいまいち、不完全。
 そこで、UnityのWebGLでためしたら、うまくいったが、けっこうはまりどころはあった。ChatGPTからも聞きながら、
コードは、以下のものでよかったが、設定で注意点がある。
①Canvas下だとうまく動作しなかった。このへんは、ChatGPTもきづいてくれなかった。常識的なことなのかもしれないが、初心者には盲点。
②オブジェクトにはColliderを追加する。

public class DragAndDrop : MonoBehaviour
{
    public GameObject gameObject;
    private bool isDragging = false;
    private Vector3 offset;
    private void OnMouseDown()
    {
        if (Input.GetMouseButton(0))
        {
            isDragging = true;
            offset = gameObject.transform.position - GetMouseWorldPosition();
        }
       // Debug.Log("MouseDown");
    }
    private void OnMouseDrag()
    {
        if (isDragging)
        {
            gameObject.transform.position = GetMouseWorldPosition() + offset;
        }
    }
    private void OnMouseUp()
    {
        isDragging = false;
    }
    private Vector3 GetMouseWorldPosition()
    {
        Vector3 mousePosition = Input.mousePosition;
        mousePosition.z = Camera.main.nearClipPlane;
        return Camera.main.ScreenToWorldPoint(mousePosition);
    }
}

Inspector でSprite Renderer>Spriteの欄をSquareにして、その下にcanvasをつけて、図形を描画したものを動かすこともできる。
画像にしたかったら、Spriteの欄に画像PNGなどを持ってくることもできる。

2023年6月4日日曜日

Unity WebGLのビルドは大変

 設定を試行錯誤してようやくビルドできた。ディフォルトでは、メモリ不足でだめだったので。

Buid Settings:
Texture Compression :use player settings
Development Build :No Check
Code Optimization :Size
Max Texture Size : Max64
Txture Compression: Force Fast Compressor
Player Settings...:
Texture Compression format: DXT
Ligtmap Encoding :LowQuality
HDR Cubemap Encoding :LowQuality
IL2CPP Code Generation:Faster(smaller)builds
C++ Compliler Configuration :Debug <<<<これが重要というサイトの情報あり
Optimize Mesh Data*: No Check

Compression format :最初gzipにしたが、Github pagesで受け付けないので、なしにした。

2023年6月3日土曜日

ELMにChatGPTを活用

 マイナーなELM言語ではあるが、けっこうしっかりコードを考えてくれるので助かっている。

   indexToPosition =  toFloat >> (*) 60 >> (+) 10 >> Vector2.vec2 10

というカリー化を利用したもので、このままでは、x座標固定なので、y座標固定にするにはと聞いてみたら。

fixedYCoordinate y = \x -> Vector2.vec2 x y

とすればいいことを教えてくれた。なるほど、と納得です。活用すれば短時間で修正できて便利。

2023年5月17日水曜日

Win11でなぜか、WindowsServerの共有にアクセスできない

 https://aprico-media.com/posts/6886

上記リンクを参考に、レジストリを修正したらアクセスできるようになった。

原因不明。

2023年5月10日水曜日

macOS 起動ディスク作成

 最新版がVenturaがダウンロードされたので、インストール前に

以下のコマンドを実行するとよいようだ。

sudo /Applications/Install\ macOS\ Ventura.app/Contents/Resources/createintallmedia --volume /Volumes/MyVolume

あらかじめ、USBメモリを接続して、MyVolumeに書き換えておく

Venturaにするか、別のOSにするかは、/ApplicationsフォルダでInstallファイルを確認すると間違いないようだ。

ネットの情報だけだと、このへんがよくわからず、試行錯誤でようやくたどりついた感じ。

2023年5月7日日曜日

プログラミングの基礎教育について

 プログラミングの基礎といえば、アルゴリズム。以前は、高校数学あたりで、初めてでてくるが、今は、もう少し早く学習するんだろうか。高校のときの数学の先生は、アルゴリズムは将来理系で必要になるからと授業の中で特別に詳しく教えてくれた。
 自分が大学生のころは、まだ8bitPCの時代だったので正規の授業ではプログラミングは習わなかった。が、助手の先生(今は助教だろうか?)から、希望者だけにプログラミングの講習があった。①級数展開のアルゴリズムを考える演習 ②バグを含んだコード(当時はFortran)の修正する演習 が 印象に残っている。今思うと、当時教えてくれた高校の先生や、助手の先生の先見の明には感謝している。それが、プログラミングにのめりこむきっかけになったともいえる。
 ※(追伸)当時、紙カードのパンチしてプログラムを読み込ませる段階から、ようやく16bitPC+ディスプレイが出始めたころで、高くてPCは持てなかったので、専ら大学の大型コンピュータにモデム接続してFortran(ディスプレイなしで、代わりにドットプリンターでの印刷)を使っていた。端末室で使っていると、教授らもたまに、使うために入室してきて、指導者も学生も順番に使用していた、そんな時代。