csharp [WIP]クリスマスっぽい何かを作っている
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp [WIP]クリスマスっぽい何かを作っている相关的知识,希望对你有一定的参考价值。
using UnityEngine;
/// <summary>
/// [WIP] 行き当たりばったりでクリスマスっぽい何かを作っている
/// </summary>
[RequireComponent(typeof(MeshRenderer))]
public class ChristmasSomething : MonoBehaviour
{
[SerializeField]
private Vector2Int _texSize = new Vector2Int(300, 300);
private Renderer _renderer;
[SerializeField]
private float _radius = 40f;
private Texture2D _canvas;
[SerializeField]
private Color32 _baseColor = new Color32(0, 0, 0, 255);
[SerializeField]
private Color32 _addColor = new Color32(255, 255, 255, 255);
[SerializeField]
private int _interval = 10;
[SerializeField]
private int _maxParallelDrawCount = 10;
[SerializeField]
private Transform _camTransform;
void Start()
{
_renderer = GetComponent<MeshRenderer>();
_canvas = new Texture2D(_texSize.x, _texSize.y);
_renderer.material.mainTexture = _canvas;
for (int x = 0; x < _texSize.x; x++)
{
for (int y = 0; y < _texSize.y; y++)
{
_canvas.SetPixel(x, y, _baseColor);
}
}
_canvas.Apply();
}
void Update()
{
transform.Rotate(new Vector3(0.3f, 1f, 0), Time.deltaTime * 20f);
bool isApplyed = false;
FadeOut();
if (_interval < 1)
{
_interval = 1;
}
if (Time.frameCount % _interval == 0)
{
int count = Random.Range(1, _maxParallelDrawCount);
for (int i = 0; i < count; i++)
Draw(Random.Range(0, _texSize.x), Random.Range(0, _texSize.y), _radius * Random.Range(0.6f, 1f));
_canvas.Apply();
isApplyed = true;
}
if (isApplyed == false)
_canvas.Apply();
}
void LateUpdate()
{
_camTransform.LookAt(Vector3.zero);
_camTransform.RotateAround(Vector3.zero, Vector3.up, -Time.deltaTime * 20f);
}
void FadeOut()
{
for (int x = 0; x < _texSize.x; x++)
{
for (int y = 0; y < _texSize.y; y++)
{
var color = _canvas.GetPixel(x, y);
var result = Color.Lerp(color, _baseColor, color.b * 0.1f);
_canvas.SetPixel(x, y, result);
}
}
}
void Draw(int cx, int cy, float radius)
{
for (int x = 0; x < _texSize.x; x++)
{
for (int y = 0; y < _texSize.y; y++)
{
var xx = x - radius;
var yy = y - radius;
float distance = Mathf.Sqrt(xx * xx + yy * yy);
if (distance >= radius)
continue;
_canvas.SetPixel(x + cx, y + cy, _addColor);
}
}
}
}
以上是关于csharp [WIP]クリスマスっぽい何かを作っている的主要内容,如果未能解决你的问题,请参考以下文章
sh 减价でファイルリスト一覧リンクを作るためのシェルスクリプト(到位桶用)
csharp 【C#】XmlWriterでxmlを书くときのエスケープ文字に关するTips.WriteRaw + SecurityElement.Escapeがいい感じっぽい。
xml 枠っぽいXML
scss 萨斯で连想配列っぽいものサンプル
html 円盘上のリンクを作ってみた
c_cpp LSコマンドを作ってみた