在公司的项目中给策划做了一个可以在场景中创建简单阻挡物体的小工具,也许大家有用的到的,拿出来分享一下。
整体思路是把地形用一米见方的格子分隔,然后在格子里放置cube代替阻挡,存盘时用一维数组,1表示阻挡,0表示没有阻挡。如果要实现更精确的阻挡也可以直接保存位置和旋转信息。本人偷懒只实现了在Game视图中创建阻挡,想要在Scene视图中实现如Unity自身的树木创建系统就留给大家自己研究,哈哈,也可以留言讨论啦。
首先上效果图
-
首先我们要给镜头实现一个可以在场景中漫游并放置阻挡的脚本(有注释的哦!)
<pre name="code" class="csharp">///<summary>
///作用:<实现在场景中自由放置Cube,wasd移动位置,按住鼠标右键旋转镜头,鼠标左键放置阻挡,按住左shift点左键删除阻挡,滚轮也可前后移动>
///作者:易山松
///编写日期:<2014-7-18>
///</summary>
using UnityEngine;
using System.Collections;
[AddComponentMenu("Scrips/CreateBlock")]
public class CameraController : MonoBehaviour
{
// 鼠标滚轮灵敏度
public float MouseWheelSensitivity = 3f;
//镜头旋转速度
public float xSpeed = 250.0f;
public float ySpeed = 120.0f;
//镜头移动速度
public float moveFactor = 10f;
//镜头旋转角度限制,不然就转晕了
public int yMinLimit = -20;
public int yMaxLimit = 80;
private float x = 0.0f;
private float y = 0.0f;
//右键是否按下标志
private bool mousedown;
void Start()
{
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
{
rigidbody.freezeRotation = true;
}
}
// Update is called once per frame
void Update()
{
Move();
CreateCube();
}
void