Unity3D客户端在游戏场景中创建阻挡并用二进制导出

本文介绍了使用Unity3D在游戏场景中创建阻挡的方法,通过一米见方的格子和Cube代表阻挡,并利用二进制格式导出阻挡信息。作者提供了镜头漫游和放置阻挡的脚本,以及阻挡信息的导入功能。文章提供了一个简单的实现,鼓励读者在Scene视图中进一步完善,如Unity的树木创建系统。
摘要由CSDN通过智能技术生成

在公司的项目中给策划做了一个可以在场景中创建简单阻挡物体的小工具,也许大家有用的到的,拿出来分享一下。

整体思路是把地形用一米见方的格子分隔,然后在格子里放置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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值