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

(61评价)
价格: 2170.00元
stealth视频中,转向时夹角的angle,我print出来都不超过180,咋回事。。。
Shawn唐发起了问答2019-01-16
5
回复
365
浏览
	void Update () {
        var h = Input.GetAxis("Horizontal");
        var v = Input.GetAxis("Vertical");
        //anim.SetFloat("Speed",v * 2.6f);
        //anim.SetFloat("runRotation", h * 2.3f);
        //print(Time.timeScale);
        //print(h);
        if (Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1f)
        {
            float newSpeed = Mathf.Lerp(anim.GetFloat("Speed"), 5.6f, moveSpeed * Time.deltaTime);
            anim.SetFloat("Speed", newSpeed);

            Vector3 targetVec = new Vector3(h, 0, v);
            Vector3 currentVec = transform.forward;
            print("targetVec:" + targetVec);
            print("currentVec:" + currentVec);
            float angle = Vector3.Angle(targetVec, currentVec);
            print("angle:"+angle);
            //if (angle > 180) {

           // ...进不来
            //}
       
            transform.Rotate(Vector3.up * angle * Time.deltaTime*rotateSpeed);
        }
        else {
            anim.SetFloat("Speed", 0f);
        }

    }

我print出来都不超过180度

所有回复
  • 老师_Trigger 2019-01-16

    同学你好,为什么要输出180度呢,具体是哪个要180度,同学可以看一下老师源码,看看哪一步跟漏了。

    • Shawn唐 2019-01-17

      老师的视频里面,在控制人物转弯的时候,会现在的代码会导致只从右边转到制定的位置,那也就是说,如果我要从上面转到左半边,人物会走一个大圈,而不是就近转向。老师视频里面,是通过判断两个向量的夹角,当夹角大于180的时候,就用360-这个角,再乘一个负号,但是我发现我在算夹角的时候并不会出现大于180的情况

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • Shawn唐 2019-01-17

    或者说,第一次进入update方法时,获取人物当前的坐标,

    Vector3 currentVec = transform.forward; 

    不准确。这个可以从console里面观察到

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_Trigger 2019-01-17

    影响我们的项目吗?如果不影响可以不用管,这个课程比较久了,可以打开老师源码看一下,如果修改不了了可以再来问老师,老师会去再看看源码。

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