unity 实现类似地铁的有高度变化,通道类型的小地图,点击通道快速定位到通道位置,点击通道外无反应,整理实现脚本
时间: 2023-11-13 17:29:10 浏览: 64
好的,下面是一个简单的实现脚本,供你参考:
```csharp
using UnityEngine;
public class SubwayMap : MonoBehaviour
{
// 地铁模型的触发器
public Collider subwayCollider;
// 小地图的UI画布
public Canvas mapCanvas;
// 小地图上的标记
public RectTransform mapMarker;
// 相机用于查看地铁模型
public Camera subwayCamera;
// 玩家所在的高度
private float playerHeight;
void Start()
{
// 获取地铁模型的高度
playerHeight = subwayCollider.bounds.min.y;
}
void OnTriggerEnter(Collider other)
{
// 进入地铁模型的触发器
if (other == subwayCollider)
{
// 显示小地图
mapCanvas.gameObject.SetActive(true);
// 将小地图的标记放在玩家所在的高度
mapMarker.position = new Vector3(mapMarker.position.x, playerHeight, mapMarker.position.z);
// 将相机移动到地铁模型中心并旋转
subwayCamera.transform.position = subwayCollider.bounds.center;
subwayCamera.transform.rotation = Quaternion.Euler(90, 0, 0);
}
}
void OnTriggerExit(Collider other)
{
// 离开地铁模型的触发器
if (other == subwayCollider)
{
// 隐藏小地图
mapCanvas.gameObject.SetActive(false);
}
}
void Update()
{
// 将小地图的标记跟随玩家位置
mapMarker.position = new Vector3(PlayerController.instance.transform.position.x, playerHeight, PlayerController.instance.transform.position.z);
}
}
```
这个脚本中,我们使用了Collider作为地铁模型的触发器,Canvas作为小地图的UI画布,RectTransform作为小地图上的标记,Camera用于查看地铁模型。在进入地铁模型的触发器时,我们显示了小地图,并将标记放在玩家所在的高度上,同时将相机移动到地铁模型中心并旋转。在离开地铁模型的触发器时,我们隐藏了小地图。在Update函数中,我们将标记跟随玩家位置。
阅读全文