zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    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;           
            }
        }
    }
    

      

  • 相关阅读:
    Leetcode Binary Tree Level Order Traversal
    Leetcode Symmetric Tree
    Leetcode Same Tree
    Leetcode Unique Paths
    Leetcode Populating Next Right Pointers in Each Node
    Leetcode Maximum Depth of Binary Tree
    Leetcode Minimum Path Sum
    Leetcode Merge Two Sorted Lists
    Leetcode Climbing Stairs
    Leetcode Triangle
  • 原文地址:https://www.cnblogs.com/jj391/p/4770844.html
Copyright © 2011-2022 走看看