オブジェクト上に貼り付けた Textureへ直接描画することを試してみました。
今回は北村愛実さんの以下のブログを参考にさせて頂きました。
(http://nn-hokuson.hatenablog.com/entry/2016/12/08/200133 )
オブジェクトをキー操作して、オブジェクトが通った座標に指定した色を描画しています。
2つのクラスを作っていますが、Test_Drawが描画に関わる部分で、描画するオブジェクトにアタッチしてます。Test_Moveの方は、移動するオブジェクトにアタッチして、移動処理と描画する座標をTest_Drawに送っています。

ここでは、描画のメインパートであるTest_Drawのみソースを張り付けておきます。
(Test_Moveは移動処理や座標変換処理だけで単純です。)
今回は北村愛実さんの以下のブログを参考にさせて頂きました。
(http://nn-hokuson.hatenablog.
オブジェクトをキー操作して、オブジェクトが通った座標に指定した色を描画しています。
2つのクラスを作っていますが、Test_Drawが描画に関わ

ここでは、描画のメインパートであるTest_Drawのみソースを張り付けておきます。
(Test_Moveは移動処理や座標変換処理だけで単純です。)
public class Test_Draw_01 : MonoBehaviour {
private Texture2D drawTexture ;
private Color[] buffer;
// Texture size (pixel) and Object size (pixel)
private const int C_TEXTURE_Z = 500;
private const int C_OBJECT_X = 50;
private const int C_OBJECT_Z = 50;
public void Paint_Line (int point_X, int point_Z) {
// Copy current pixels of texture to buffer
Texture2D mainTexture =
(Texture2D) GetComponent<Renderer> ().material.mainTexture;
Color[] pixels = mainTexture.GetPixels();
buffer = new Color[pixels.Length];
pixels.CopyTo (buffer, 0);
// Change pixel color of drawing area
for(int x = point_X - (C_OBJECT_X/2);
x < point_X + (C_OBJECT_X/2); x++){
for(int y = point_Z - (C_OBJECT_Z/2);
y < point_Z + (C_OBJECT_Z/2); y++){
buffer.SetValue (Color.yellow, x + C_TEXTURE_Z * y);
}
}
// Update pixels of texture with changed pixels
drawTexture = new Texture2D (mainTexture.width,
mainTexture.height, TextureFormat.RGBA32, false);
drawTexture.filterMode = FilterMode.Point;
drawTexture.SetPixels (buffer);
drawTexture.Apply();
GetComponent<Renderer> ().material.mainTexture = drawTexture;
}
}
Test_Draw内の Textureへ書き込む部分は、以下の
まず元のTextureの各ドットの色情報を取得して、buff
受け取った移動オブジェクトの位置を中心にオブジェクトのサイズ
(この部分を変更すればどうにでも描画できる。)
そして、最後に色変更をした bufferを実際のTextureに上書き。
上記の buffer上で色情報を直接変更する部分を書き換えて、このメソッドを座標を引数としてコールすれば Texture上で好きなように描画ができるわけです。
お試しあれ。
【 Texture への描画を試してみた Part 2 】
Sponsored Link