Unity简单实现FPS第一人称视角(三)

Unity简单实现FPS第一人称视角(三)

实现小地图的功能

Unity简单实现FPS第一人称视角(一).
Unity简单实现FPS第一人称视角(二).
Unity简单实现FPS第一人称视角(四).

创建摄像头

该摄像头是专门用来显示小地图的
1、在菜单栏中选中GameObject->Camera创建一个摄像机,并将它命名为CameraMap。
在这里插入图片描述
2、选中CameraMap摄像头,点击坐标系的y轴,最后选择菜单栏上的GameObject->Aligh With View。
Unity简单实现FPS第一人称视角(三)_第1张图片
Unity简单实现FPS第一人称视角(三)_第2张图片
3、这样就使得照相机是从上往下拍摄的了。然后再根据CameraMap的Camera Preview调整一下CameraMap的位置。
4、修改CameraMap的参数如下所示。
Unity简单实现FPS第一人称视角(三)_第3张图片
ViewPort Rect的x和y表示的是分屏幕再主屏幕上的位置(0,0)表示坐下角,(1,1)表示右上角,取值范围为0-1之间。h和w表示的是高度和宽度。Field of View为视野的大小。

创建主角在地图上的显示

1、在Hierarchy视图上选择Create->Sphere创建出一个球体并命名为dummy。将该球体置于Player游戏体层级下。
在这里插入图片描述
2、随便给dummy游戏体赋予一个任意颜色的材质球。
在这里插入图片描述
主角再地图上就用dummy这个模型来显示。但是我们不想再游戏中也看到这个dummy,所以我们需要接下来的步骤。

创建Layer

1、选择菜单栏Edit->ProjectSetting->Tags and Layers。
Unity简单实现FPS第一人称视角(三)_第4张图片

2、选择Layers,添加两个Layer,level和dummy。其中dummy是主角,地图上显示的模型图层,另一个level是场景的图层。
在这里插入图片描述
3、选择dummy游戏体将他的layer设置为dummy,并取消选中Sphere Collide。免得它影响游戏。
Unity简单实现FPS第一人称视角(三)_第5张图片
4、同理给场景的Layer设置为level。注意Plane场景下的所有子游戏体的Layer都要设为level。
Unity简单实现FPS第一人称视角(三)_第6张图片
5、MainCamera中显示的是游戏第一人称视角,不需要显示dummy球体。因此我们再设置显示的Layer上取消选中dummy。
Unity简单实现FPS第一人称视角(三)_第7张图片
6、同理再CameraMap中只需要显示场景level和dummy其他都不需要显示。
Unity简单实现FPS第一人称视角(三)_第8张图片
这时候运行的话还有一点问题。就是人物一旦移动到地图可视视角的外面就会看不到人。所以我们需要CameraMap跟随主角。
7、创建miniCamera.cs脚本,并添加代码如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MiniCamera : MonoBehaviour
{
     
    // Start is called before the first frame update
    public Transform m_player;

    float height;
    void Start()
    {
     
        float ratio = (float)Screen.width / (float)Screen.height;
        this.GetComponent<Camera>().rect = new Rect(1 - 0.2f, (1 - 0.2f * ratio), 0.2f, 0.2f * ratio);
        height = transform.position.y;
    }

    // Update is called once per frame
    void Update()
    {
     
        this.transform.position = m_player.transform.TransformPoint(0, height, 0);
    }
}

这时候运行游戏就会看到小地图的效果了。但是其实还有一个缺点那就是我们选则的小球是分辨不出朝向的。因此无法实现Player在小地图的朝向。这个问题以后再处理。

运行效果

动图上传失败= =。
Unity简单实现FPS第一人称视角(三)_第9张图片
Unity简单实现FPS第一人称视角(三)_第10张图片

你可能感兴趣的:(UnityDemo)