求教,如何u3d 中使用全景图片u3d制作游戏地图

用Unity实现《随机生成 Tile Based 地图之——洞穴》中的算法(已更新) | Roguelike 开发小组 | indienova 独立游戏
Roguelike 开发小组
Roguelike 开发的相关讨论
用Unity实现《随机生成 Tile Based 地图之&&洞穴》中的算法(已更新)
/indie-game-development/procedural-content-generation-tile-based-random-cave-map/ 原文地址只做了初始的部分,改进后由于周围墙的检测大了一圈,数组里判定边界太麻烦,也没想到好的方法就懒得写了。把代码绑在场景中任意物体上,并手动指定cube1和cube2即可, R键初始化,F键迭代,可修改行数和列数。仅供大家参考。重新编辑:用二维数组重写了代码,算法也使用了改进后的,但生成的地图四周有些不太平整。由于原文写的比较精简,经过我对原文以及原网页JS代码的理解只能写到这样,供大家参考。using UnityEusing System.Cpublic class Script : MonoBehaviour {public int row = 30;public int col = 35;private bool[,] mapApublic GameObject cube1, cube2;GameO& &void Start () {cubes = new GameObject ();mapArray = InitMapArray ();CreateMap (mapArray);}void Update(){& & & & if (Input.GetKeyDown (KeyCode.R))&{Button1 ();}if (Input.GetKeyDown (KeyCode.F)){Button2 ();}}bool[,] InitMapArray(){bool[,] array = new bool[row , col];for (int i = 0; i & i++){for (int j = 0; j & j++)&{array [i,j] = Random.Range (0, 100) & 60;& & & & & & & & if (i == 0 || i == row - 1 || j == 0 || j == col - 1)& & & & & & & & {& & & & & & & & & & array[i, j] =& & & & & & & & }& & & & & & }}}bool[,] SmoothMapArray(bool[,] array){bool[,] newArray = new bool[row , col];& & & & int count1, count2;&for (int i = 0; i & i++)& & & & {& & & & & & for (int j = 0; j & j++)& & & & & & {& & & & & & & & count1 = CheckNeighborWalls (array, i, j, 1);& & & & & & & & count2 = CheckNeighborWalls (array, i, j, 2);if (count1 &= 5 || count2 &= 2)&{newArray [i, j] =}else{newArray [i, j] =}if (i == 0 || i == row - 1 || j == 0 || j == col - 1)&{newArray [i, j] =}& & & & & & & &// newArray[i, j] = count1 &= 5 || count2 &= 2 ? true :& & & & & & }}return newA}int CheckNeighborWalls(bool[,] array, int i, int j ,int t){& & & & int count = 0;for (int i2 = i - i2 & i + t + 1; i2++)&{for (int j2 = j - j2 & j + t + 1; j2++)&{& & & & & & & & if (i2 & 0 && i2 & row && j2 &= 0 && j2 & col)& & & & & & & & {& & & & & & & & & & if (!array[i2, j2])& & & & & & & & & & {& & & & & & & & & & & & count++;& & & & & & & & & & }& & & & & & & & } & && & & & & & }}if (!array[i, j])count--;}void CreateMap(bool[,] array){for (int i = 0; i & i++)&{for (int j = 0; j & j++){if (!array [i , j]){GameObject go = Instantiate (cube1, new Vector3 (i, 1, j), Quaternion.identity)as GameOgo.transform.SetParent (cubes.transform);}&else{GameObject go = Instantiate (cube2, new Vector3 (i, 0, j), Quaternion.identity)as GameOgo.transform.SetParent (cubes.transform);}}}}public void Button1(){& & & & times = 0;Destroy (cubes);cubes = new GameObject ();mapArray = InitMapArray ();CreateMap (mapArray);}public void Button2(){if (times & 7)&{times++;Destroy(cubes);cubes = new GameObject();mapArray = SmoothMapArray(mapArray);CreateMap(mapArray);}}}
近期喜欢的会员
有心了~ 可惜小组对代码显示的支持不是很友好,没有高亮和缩进。
将代码分块讲解且适当加入注释会更好一些。
贴在gist上Unity3d游戏开发如何实现小地图
本篇文章我们来学习下如何在unity中实现小地图
今天我们来讲一下在3D中如何实现小地图。首先,我们来一起看看最终实现的效果:
Unity3d游戏开发如何实现小地图
要实现小地图效果,需要实现对于小地图和角色的绘制,所以这里需要用到OnGUI()方法,我们一起来看代码:
using UnityE
using System.C
public class CameraScript : MonoBehaviour {
//定义小地图贴图
public Texture MapT
//定义角色标志贴图
public Texture PlayerT
//定义第三人称角色控制器
private GameObject m3rdPersonC
public GameObject BulletP
public GameObject B
//定义角色位置
private float mPersonX;
private float mPersonZ;
//定义缩放比例
private float mS
void Start ()
//获取角色控制器
m3rdPersonControl=GameObject.Find(&3rd Person Controller&);
//获取角色位置
mPersonX=m3rdPersonControl.transform.position.x;
mPersonZ=m3rdPersonControl.transform.position.z;
//根据小地图和屏幕计算缩放比例
mScale=(200F/Screen.width)&(200F/Screen.height)?(200F/Screen.width):(200F/Screen.height);
void Update ()
//刷新角色位置
mPersonX=m3rdPersonControl.transform.position.x;
mPersonZ=m3rdPersonControl.transform.position.z;
if(Input.GetMouseButtonDown(0))
Vector3 Target=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y, 1));
Vector3 Dir=Target-m3rdPersonControl.transform.
Instantiate(Bullet,BulletPos.transform.position,Quaternion.identity);
void OnGUI()
//在屏幕右上角绘制200x200的小地图贴图
GUI.DrawTexture(new Rect(Screen.width-200,0,200,200),MapTexture);
//以小地图左下角为原点的右手系,角色标示宽度和高度为20
GUI.DrawTexture(new Rect(Screen.width-200+mPersonX*mScale+20,200-mPersonZ*mScale-20,20,20),PlayerTexture);
在上述代码中,我们设定小地图的宽度和高度均为200,设定角色标示物的宽度和高度均为20,并规定地图向上为正北方向。我们在初始化方法Start()方法中获取一个角色控制器,以获取角色的位置,并根据小地图和屏幕计算出缩放比例。在OnGUI()方法中我们根据缩放比例来绘制小地图和角色标示物。而在Update()方法中我们刷新角色的位置。
这就是今天的内容啦,本篇教程到此结束
首发地址: Unity3d游戏开发如何实现小地图__丝路教育
资源地址: (分享请保留)
关注微信,有惊喜!
Powered by SILUCG! X1.0
我们一直在努力!
在线客服01:
在线客服02:新人求教怎么用UNITY做游戏地图或者场景_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:72,742贴子:
新人求教怎么用UNITY做游戏地图或者场景收藏
1. 本人新手,才接触不就U3D,只是想用U3D做一些自己想要的地图和一些特效。2. 现在自学发现自己跟着书上做的地图和实际效果不怎么相符合。所以想问一下,地图场景设计哪位有教学视频。3. 求教。
登录百度帐号推荐应用需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金电商旺铺用他们在大促卖卖卖?
用Unity3D做CS地图和人物模型
有相似问题想解决?专业顾问来帮助您
匹配服务商
选择服务商,签单
服务商工作
验收并付款
参与报价,开始赚钱
提交你的报价和方案
中标后交付作品
获得任务赏金
根据浏览的需求为您推荐
交易成功的需求
其它游戏开发相关需求
关注猪八戒微信

我要回帖

更多关于 u3d场景制作 的文章

 

随机推荐