欢迎来到我的博客!

柏林噪音图

w :宽,   h:高 ,  x:代表x轴, z:代表z轴  ,y:代表:y轴

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Map : MonoBehaviour
{
public RectTransform playerimage;//小地图上的玩家
public Transform player;//玩家
public Image map;//地图
public Texture2D texture;
public Color tu = Color.yellow;
public Color cao = Color.green;
int w = 100;
int h = 100;
void Start()
{
texture = new Texture2D(w, h);
VertexHelper vh = new VertexHelper();
for (int x = 0; x < w; x++)
{
for (int z = 0; z < h; z++)
{
float y = Mathf.PerlinNoise(x * 0.1f, z * 0.1f);
float uvx = (float)x / (float)(w - 1);
float uvy = (float)z / (float)(h - 1);
Color color = Color.Lerp(tu, cao, y);
texture.SetPixel(x, z, color);
vh.AddVert(new Vector3(x-w/2, y * 10, z-h/2), Color.white, new Vector2(uvx, uvy));
if (x!=w-1&&z!=h-1)
{
vh.AddTriangle(x * h + z, x * h + z + 1, (x + 1) * h + z + 1);
vh.AddTriangle(x * h + z, (x + 1) * h + z + 1,(x + 1) * h + z);
}
}
}
texture.Apply();
Mesh mesh = new Mesh();
vh.FillMesh(mesh);
GetComponent<MeshFilter>().mesh = mesh;
GetComponent<MeshCollider>().sharedMesh = mesh;
Material material = new Material(Shader.Find("Standard"));
material.mainTexture = texture;
GetComponent<MeshRenderer>().material = material;

}

void Update()
{
float pivotX = (player.transform.position.x + w / 2) / (float)w;
float pivotY = (player.transform.position.z + h / 2) / (float)h;
map.rectTransform.pivot = new Vector2(pivotX, pivotY);
playerimage.eulerAngles = Vector3.back * player.eulerAngles.y;
if ((map.rectTransform.localScale + Vector3.one *Input.GetAxis("Mouse ScrollWheel")).x>=1)
{
map.rectTransform.localScale += Vector3.one * Input.GetAxis("Mouse ScrollWheel");
}
}
}


 

 

posted @   梦凡尘_mzz  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示