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

(196评价)
价格: 4019.00元
Unity 延时调用方法
Yangjf发起了问答2022-09-27
1
回复
135
浏览

老师,你好!

我定义了一个射门的方法,就是玩家按下射门键时,给会给足球添加一个速度,使之飞出去。发现射门动画,还没播放完呢,球就已经飞出去了。那我就想到了,用延时函数,延时几秒后,再给足球添加速度。不知道是什么原因,球不会飞出去了。Invoke,和 Coroutine 协程都试过了,都不行。后来我想给射门动画添加下事件,播放到关键帧,调用射门方法,结果球还是不会飞。

老师,您给看看 是哪里出了问题?

public void ShootBall()
    {
        if (haveball)
        {
            animator.CrossFade("Strike Foward Jog", 0f);//播放射门动画
           
        }
       
    }
   
  public  void SetVelocity()
    {
        football.SetActive(true);//显示足球
        footballclass.haveballplayer = null;//将持球者设为空
        Ball.GetComponent<SphereCollider>().isTrigger = false;//设置足球的碰撞器
        falseball.SetActive(false);//假球隐藏
        haveball = false;
        // 设置足球的位置
        Ball.transform.position = this.transform.Find("ShootPosition").position;
        Ball.transform.rotation = transform.rotation;
        //冻结足球的旋转
        footballrRigidbody.constraints = RigidbodyConstraints.FreezeRotation;
        //旋转足球的角度
        float a = shootangle - 90;
        Ball.transform.Rotate(a, 0, 0);
        footballrRigidbody.velocity = Ball.transform.forward * 25f * shootmagnitude;
        footballrRigidbody.constraints = RigidbodyConstraints.None;
        Debug.Log("2222222222");

    }

所有回复
  • 老师_Trigger 2022-09-28

    同学你好,可以看一下动画事件放的位置对不对,保证没问题可以看一下 SetVelocity() 调用没有,调用了几次,另外检查一下其他位置有没有设置球的速度等等

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