项目实训(三)

本篇主要介绍游戏中白天草地场景的地形网格的设置,从而为后续种植植物做下基础。

首先要创建一个网格管理器,进行相应数据调节后编写代码进行网格的设置。

 主要逻辑为基于grid脚本的形式创建网格,进行对效果的观察设置偏移量数值,这样的话可以防止在一个网格上种植了植物之后没有对其内容的保存以使还能够在这个网格上种植其他植物。使用for循环依次为地图上增加网格。

  private void CreatGridsBaseGird()
    {
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                GirdList.Add(new Grid(new Vector2(i,j), transform.position + new Vector3(1.33f * i, 1.63f * j, 0),false));
            }
        }
    }

因此创建grid脚本,记录网格的信息,记录坐标点、世界坐标、某个网格上是否有植物、当前植物的种类等信息。

之后在网格管理器脚本中在编写代码对网格坐标点的获取可以通过鼠标获取以及通过世界坐标获取

public Vector2 GetGridPointByMouse()
    {

        return GetGridPointByWorldPos(Camera.main.ScreenToWorldPoint(Input.mousePosition));
    }

public Vector2 GetGridPointByWorldPos(Vector2 wordlPos)
    {
        return GetGridByWorldPos(wordlPos).Position;
    }

    public Grid GetGridByWorldPos(Vector2 wordlPos)
    {
        float dis = 1000000;
        Grid grid = null;
        for (int i = 0; i < GirdList.Count; i++)
        {
            if (Vector2.Distance(wordlPos, GirdList[i].Position) < dis)
            {
                dis = Vector2.Distance(wordlPos, GirdList[i].Position);
                grid = GirdList[i];
            }
        }
        return grid;
    }


    public Grid GetGridByMouse()
    {
        return GetGridByWorldPos(Camera.main.ScreenToWorldPoint(Input.mousePosition));
    }

经过以上的脚本就可以实现在网格中种植植物的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值