贝塔(Beta)函数是统计学中的密度函数,用来描述概率分布。可利用密度函数来设计游戏地图中不同位置的刷怪机率。
工具:Unity2018
示例
using System; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.UI; public class BetaCurve : MonoBehaviour { public float P = 2; public float Q = 2; public RawImage rawImage; public Text text; public string savePath; public bool refresh = true; public bool save = false; void Update() { if (!refresh) return; refresh = false; //利用Beta函数在Texture上画曲线 Texture2D texture = new Texture2D(100, 100); for (float t=0; t<=1; t+=0.01f) { float v = BetaLerp(t); int x = (int)(t * texture.width); int y = (int)(v * texture.width); texture.SetPixel(x, y, Color.red); } texture.Apply(); rawImage.texture = texture; if (text) text.text = string.Format("P={0}\nQ={1}", P, Q); if (save) SavePNG(string.Format("{0}/P{1}_Q{2}.png", savePath, P, Q), texture); } float BetaLerp(float x) { //贝塔(Beta)函数 float y = Mathf.Pow(x, P - 1) * Mathf.Pow(1 - x, Q - 1); return y; } public static void SavePNG(string filePath, Texture2D texture) { try { byte[] pngData = texture.EncodeToPNG(); File.WriteAllBytes(filePath, pngData); } catch (Exception ex) { Debug.Log(ex.StackTrace); } } }
运行测试