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)
        {
            //如果下标越界,表明到达最后目的地,可以在里面添加操作,比如掉血,销毁敌人
        }
    }

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值