栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

unity塔防游戏开发之基于标点法来简易实现敌人路线移动

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity塔防游戏开发之基于标点法来简易实现敌人路线移动

unity塔防游戏开发之基于标点法来简易实现敌人路线移动

首先创建一个物体,把它设置为静态物体,给他创建一系列子物体,将这些子物体放在各个路线的转角处,这样就实现标点的目的,然后将这些路标的位置都设置好之后,可以开始写脚本了

 	public static Transform[] positions;
    
    private void Awake()
    {
        positions = new Transform[transform.childCount];
        for(int i = 0;i < positions.Length; i++)
        {
            positions[i] = transform.GetChild(i);
        }
    }

将它们的位置都保存在一个数组中,然后将这个脚本挂载在场景的物体中,来实现保存各个路标的目的,接下来就要写敌人的位置移动的脚本:

	public float speed = 10;
	private Transform[] positions;
    private int index = 0;
    
    // Start is called before the first frame update
    void Start()
    {
    	//用这个变量来保存你设置的路标的位置
        positions = wayPoints.positions;     
    }

    // Update is called once per frame
    void Update()
    {
        Move(); 
    }
    
    void Move()
    {
        if (index > positions.Length - 1) return;
        //Translate是一个移动方式,可以直接调用,
        //从这个物体本身的位置移动到路标位置
        transform.Translate((positions[index].position - transform.position).normalized * Time.deltaTime * speed);
        //这个路标位置到达之后,索引到下个路标的位置
        if(Vector3.Distance(positions[index].position , transform.position) < 0.2f)
        {
            index++;
        }
        
        if(index > positions.Length - 1)
        {
            //如果下标越界,表明到达最后目的地,可以在里面添加操作,比如掉血,销毁敌人
        }
    }

这样就实现,用标点法来完成敌人从生成地点到达目标地点的路线设计,使用简单的路标法来完成这个路线的指定。

以上是个人学习笔记,仅供参考。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号