kelpnet의 작법 8

개요


나는 켈프넷의 방법을 조사했다.
선로를 추적해 보세요.
나는 운전을 해 보았다.

결과


몇 번을 하든지 간에 두 개의 각을 통해 아웃해야 한다.마물이 살고 있다.

예제 코드

using UnityEngine;
using KelpNet;
using System;

public class pc3 : MonoBehaviour
{
    [SerializeField]
    private Camera dispCamera;
    [SerializeField]
    private SpriteRenderer bod;
    [SerializeField]
    public float val;
    private Texture2D tex0;
    Function testnn;
    void Start()
    {
        var tex = dispCamera.targetTexture;
        tex0 = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
        testnn = ModelIO.Load(Application.dataPath + "/test.nn");
    }
    void Update()
    {    
        var tex = dispCamera.targetTexture;
        Texture2D tex1 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
        Texture2D tex2 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
        Texture2D tex3 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
        Texture2D tex4 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
        Texture2D tex5 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
        float v1;
        float v2;
        float v3;
        float v4;
        float v5;
        RenderTexture.active = dispCamera.targetTexture;
        tex0.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
        tex0.Apply();
        tex1.ReadPixels(new Rect(10, 200, 40, 40), 0, 0);
        tex1.Apply();
        tex2.ReadPixels(new Rect(60, 200, 40, 40), 0, 0);
        tex2.Apply();
        tex3.ReadPixels(new Rect(110, 200, 40, 40), 0, 0);
        tex3.Apply();
        tex4.ReadPixels(new Rect(160, 200, 40, 40), 0, 0);
        tex4.Apply();
        tex5.ReadPixels(new Rect(210, 200, 40, 40), 0, 0);
        tex5.Apply();
        val = Sense(tex0);
        v1 = Sense(tex1);
        v2 = Sense(tex2);
        v3 = Sense(tex3);
        v4 = Sense(tex4);
        v5 = Sense(tex5);
        Real[] s = new Real[] {
            v1,
            v2,
            v3,
            v4,
            v5
        };        
        NdArray res = testnn.Predict(s)[0];
        float x = 0;
        float y = 0;
        if (res.Data[0] > res.Data[1] && res.Data[0] > res.Data[2])
        {
            y = Time.deltaTime * 0.5f;
        }
        if (res.Data[1] > res.Data[0] && res.Data[1] > res.Data[2])
        {
            x = Time.deltaTime * -50.0f;
        }
        if (res.Data[2] > res.Data[0] && res.Data[2] > res.Data[0])
        {
            x = Time.deltaTime * 50.0f;
        }
        transform.Rotate(0, 0, x);
        transform.Translate(0, y, 0);
        Sprite spr = Sprite.Create(tex0, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f));
        bod.sprite = spr;
    }
    private float Sense(Texture2D tex)
    {
        var cols = tex.GetPixels();
        var avg = new Color(0, 0, 0);
        foreach (var col in cols)
        {
            avg += col;
        }
        avg /= cols.Length;
        return avg.grayscale;
    }
}

이상

좋은 웹페이지 즐겨찾기