您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页Unity实现技能追踪

Unity实现技能追踪

来源:二三四教育网

0.介绍

玩游戏时,我们放了一个大招希望一下击中敌人,当然敌人也不会傻傻地呆在那里不动,今天要实现的一个功能就是这个样子,如图:


追踪成功.png

1.大概实现

敌人的移动我们这里用Behavior Designer来实现,Behavior Designer也叫行为树,可以不用写代码实现诸多ai功能,技能追踪其实就是用了Vector.MoveTowards()来实现。

2. Behavior Designer实现巡逻

简单巡逻.png

3.技能追踪

技能追踪其实就是让粒子系统追着敌人打,也就是移动粒子,要想移动粒子要把一个物体上的粒子全部拿到,然后遍历移动,

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

public class Test : MonoBehaviour {

    public GameObject A;
    private float speed = 50;

    private ParticleSystem particle;
    private int size;
    private ParticleSystem.Particle[] temp;

    // Use this for initialization
    void Start() {

        particle = this.GetComponentInChildren<ParticleSystem>();
        temp = new ParticleSystem.Particle[particle.maxParticles];
        
    }

    void LateUpdate()
    {
     
        size = particle.GetParticles(temp);

        float step = speed * Time.deltaTime;
        for(int i = 0; i < size; i++)
        {

            temp[i].position = Vector3.MoveTowards(temp[i].position, A.transform.position, step);
  A.transform.position, step);
        }
        particle.SetParticles(temp,size);
    }
}

代码实现还是比较简单,先是拿到物体上的粒子系统组件,然后是通过 ParticleSystem.Particle[]来获取所有粒子,再接着遍历所有粒子,用Vector3.MoveTowards方法来改变位置 ,最后再SetParticles一下保存进去,大功告成。

这里有1个坑要说明一下,拿到的粒子放到数组中时,数组要先声明现实例化,我当时只是声明了一个数组但是没有实例化,放的技能始终没有追踪。

最后效果图如下:

追踪中.png 追踪成功.png

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务