Tilemaps.SetTile方法仅在Update方法中部分起作用

问题描述

我对Unity,C#和游戏开发完全陌生(不到1周)。我开始制作二维等距,基于网格的CRPG,并用Unity的tilemap击中了墙。

我有一个组件,该组件使用Tilemap.SetTile在父GameObject下创建一个tilemap瓦片。当GameObject在网格周围移动时,图块应随之移动并删除一个图块。然后,该图块可以创建用于路径查找的移动障碍物节点(该路径可以与静态障碍物配合使用)。

问题在于该脚本实际上确实可以短暂地起作用,只是持续了很长时间。如果GameObject沿着网格中的路径“ n”个单元格移动,则脚本将在每次运行时渲染“ n / 2”个单元格,然后完全停止工作。没有错误消息,冻结或任何东西,只是没有绘制磁贴,而且我从登录控制台时知道脚本正确跟踪了绘制磁贴的位置。

障碍脚本如下:

private void SetobstacleTile()
{
    currentCell = obstacleMap.WorldToCell(transform.position);

    if (currentCell != prevIoUsCell)
    {
        //set the new tile
        obstacleMap.SetTile(currentCell,obstacleTile);
        // erase prevIoUs
        obstacleMap.SetTile(prevIoUsCell,null);
        // save the new position for next frame
        prevIoUsCell = currentCell;

        Debug.Log(currentCell);
    }
}
private void Update()
{
    SetobstacleTile();
}

...,当前运动如下:

void Update()
{
    if (Vector3.distance(transform.position,destination) > 0.01f)
        transform.position = Vector3.Movetowards(transform.position,destination,movementSpeed * Time.deltaTime);
}

我的直觉是与角色移动中的Update()函数和障碍物组件之间的交互作用有关,但是我没有经验知道我离问题有多近。对此造成的任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)