c# - 如何按位置获取平铺游戏对象?
问题描述
我是 Unity 的新手,发现了这个,所以我可以通过鼠标点击来获取网格的位置。
我想通过鼠标点击破坏一个瓷砖并将玩家移动到网格的位置。
我有 2 个问题,我不知道如何解决。
如果你不明白,我很抱歉,我英语不好。
解决方案
- 获得网格的位置后,如何获得平铺游戏对象?
使用Tilemap.GetInstantiatedObject
:
Tilemap tilemap; // Given
Vector3Int pos; // Given
GameObject gameObjectAtPosition = tilemap.GetInstantiatedObject(pos);
- 当我将 player.transform.position 设置为网格的位置时,它看起来像 PNG-A,但我想要的是像 PNG-B,位于图块 x 位置的中心。
将图块宽度 ( ) 的一半添加0.5 * GridLayout.cellSize.x
到您现在获得的位置的 x 上。您可以使用它Vector3.Scale
来执行此操作:
GameObject person; // Given
Vector3 tilePosition; // Given
person.transform.position = tilePosition + Vector3.Scale(new Vector3(0.5f,0f,0f), GridLayout.cellSize) ;
推荐阅读
- unit-testing - 如何使用 mockito 在我的 retrofit2 演示者上实施单元测试?
- db2 - 在 DB2 中结合 IN 和 LIKE 函数
- c - C:将结构成员从一个结构复制到另一个相似但不同的结构
- apache-nifi - 只需要恢复集群 Nifi 中一个节点的代表?
- pandas - 将行放在现有行之间,并插入数据框中的值
- asp.net-core - 在 asp.net 核心中出现错误“ERR_TOO_MANY_REDIRECTS”
- java - Java 8 可选检测空集合
- react-native-firebase - Auth:有没有办法访问 error.userInfo[FIRAuthErrorUserInfoUpdatedCredentialKey]?
- powershell - 我们如何使用 PowerShell 在 powerapps 环境中安装 D365 应用程序?
- wcf - 如何正确关闭 WCF Netnamedpipebinding 通道?