unity3d制作小地图(MiniMap)的简单Demo

本文介绍如何在Unity3D中实现简易的小地图功能。包括创建游戏场景、添加玩家和敌人角色及其移动逻辑,并通过摄像机捕捉玩家视角的小地图画面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unity3d制作小地图(MiniMap)的简单Demo

  1、在unity3d中创建新的项目,在新项目中创建Plane作为地面,根据自己的需求调整Plane的大小,同时给Plane添加Materials,这样易于区分地面与其他游戏物体区别;创建Directional light照亮游戏世界。

  2、在有游戏中添加两个Cube,添加CharacterController组件,一个命名为player,另一个命名为enemy,把它们的Layer设为Default;

  3、在player下创建Quad作为子对象,把它的Layer设为UI;把Quad的Transform的Rotation的x设置为90;Position的y值设置一个大于10的数(不要太大);这样在player的正上方就会有图标。

  

  

  4、对enemy做和player的一样处理,然后copy10个左右数量的enemy随机的放到不同的位置。

  

  5、在游戏中创建新Camera对象,把它作为player的子对象;调整Camera的位置和角度,让Camera在player的正上方俯视player。设置Camera的Culling Mask属性,把Default的勾去掉。设置ViewportRect的属性,X和Y是Camera投影到屏幕的原点(左下点为(0,0)点);W和H投影尺寸的宽和高。

  

  

  6、把Main Camera做为player的子对象调整位置和角度,设置Main  Camera的Culling Mask属性,把UI的勾去掉;分别给player、enemy添加脚本PlayerMove、EnemyMove;

复制代码
using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour
{

    private CharacterController controller;
    // Use this for initialization
    void Start()
    {
        controller = this.GetComponent<CharacterController>();
    }

    // Update is called once per frame
    void Update()
    {

        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 v1 = new Vector3(h, 0, v);
        controller.SimpleMove(v1 * 30.0f);
    }
}
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using  UnityEngine;
using  System.Collections;
 
public  class  EnemyMove : MonoBehaviour
{
 
     private  CharacterController controller;
     float  timer = 0; //控制敌人改变方向的计时器
     // Use this for initialization
     void  Start()
     {
         controller =  this .GetComponent<CharacterController>();
     }
 
     // Update is called once per frame
     void  Update()
     {
         //敌人每3秒改变一次前进方向
         if  (timer > 3)
         {
             float  r = Random.Range(-90, 91); //敌人的旋转角度在-90~90度随机取值
             transform.rotation = Quaternion.Euler(0, r, 0);
             timer = 0;
         }
         else
         {
             controller.SimpleMove(transform.forward * 15);
             timer += Time.deltaTime * 1.0f;          
         }
     }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值