问题描述
我对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 (将#修改为@)