Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
秘密行动机器人ai问题
两人荒岛发起了问答2017-10-10
7
回复
844
浏览

老师,我这个机器人追主角的时候,会卡在这个地方。我版本比视频里面的版本高,好像navmeshagent更新了,updateposition=false时候,他那个寻路插件的框就不和主角一起移动,我网上查说用navmeshagent.nextposition=transform.position就可以了。不知道是不是因为这个所以会卡在这里,这是机器人移动的代码

所有回复
  • 两人荒岛 2017-10-10

    我想了个方法是设置一个静态的3d正方体,设置他的大小,重新烘焙navmeshangent,然后再删除这个物体。目前是没什么问题了,不知道这个方法可取不可取。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 两人荒岛 2017-10-10

    public class EnemyShoot : MonoBehaviour
    {
        public float minDamage = 30;
        private Animator animator;
        private bool haveShoot=false;
        private PlayerHealth playerHealth;
        void Awake ()
        {
            animator = GetComponent<Animator>();
            playerHealth = GameObject.FindGameObjectWithTag(Tags.player).GetComponent<PlayerHealth>();
        }
        
        // Update is called once per frame
        void Update ()
        {
            if (animator.GetFloat("Shot") > 0.5)
            {
                Shooting();
                print("调用射击");
            }

            else
            {
                haveShoot = false;
            }
        }

        private void Shooting()
        {
            if (haveShoot==false)
            {
            //计算伤害
                float damage = minDamage + 90 - 9 * (transform.position - playerHealth.transform.position).magnitude;
            playerHealth.TakeDamage(damage);
                haveShoot = true;
            }
            
        }

    还有个问题就是机器人射击动画的时候不调用红色部分,我按您视频里面做的,在状态机里面弄了个和动画curves一样的shot变量,但是没输出print。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-10-10

    在控制移动的时候 navmeshagent.nextposition=transform.position

    加上这句就可以了哈

    还有-1条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!