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

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

关于丛林战争,动作切换的问题
Bean_T发起了问答2017-09-27
4
回复
688
浏览

我玩老师的实例时 鼠标点击会面向会直接转向鼠标的位置,

而我自己的就不行,比如我往 左跑的时候  点击角色右方(反反向),箭头的位置就会在左方那边生成来射出,

这样就会射到自己。。就是面向不会及时转会过来。这是为什么呢,我查了下跟老师的源码几乎一样的.不知道还有什么地方没设置好

所有回复
  • siki • 2017-09-28

    在控制射箭的时候,先控制任务转向朝向 鼠标点击的方向,再实例化箭

    这两步操作要放在同一个地方完成,这样应该就没问题了

    • Bean_T • 2017-09-29

      if (anim.GetCurrentAnimatorStateInfo(0).IsName("Grounded"))
      {
      if (Input.GetMouseButtonDown(0))
      {
      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
      RaycastHit hit;
      bool isCollider = Physics.Raycast(ray, out hit);
      Vector3 targetPosition = hit.point;
      targetPosition.y = transform.position.y;
      shootdir = targetPosition - transform.position;//鼠标点击 箭头生成的方向
      transform.rotation = Quaternion.LookRotation(shootdir);//控制面向
      anim.SetTrigger("Attack"); //控制角色动作
      Invoke("Shoot",0.3f);// 实例箭
      facade.PlayNormalSound(AudioManager.Sound_Alert);

      }
      }
      }

      这是攻击时的脚本...按老师所说的,但还是无法先转向(跑动过程中突然鼠标点击反方向,就好像跑动的动作还没停止就开始攻击动作了,但是面向没转过来)

      下面是跑动的脚本

      void FixedUpdate ()
      {

      if (anim.GetCurrentAnimatorStateInfo(0).IsName("Grounded")==false)
      {
      return;
      }
      float h = Input.GetAxis("Horizontal");
      float v = Input.GetAxis("Vertical");
      if (Mathf.Abs(h) > 0 || Mathf.Abs(v) > 0)
      {
      transform.Translate(new Vector3(h, 0, v) * speed * Time.deltaTime, Space.World);
      transform.rotation = Quaternion.LookRotation(new Vector3(h, 0, v));

      float res = Mathf.Max(Mathf.Abs(h), Mathf.Abs(v));
      forward = res;
      anim.SetFloat("Forward", res);
      }

      }

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录或注册!
  • siki • 2017-09-29

    Invoke("Shoot",0.3f);// 实例箭这里你是等了0.3秒后才开始射箭的,这个时候人物可能已经回到原来的朝向了,你就获取不到现在的朝向了

    你可以定义一个private Rotation r;private Vector3 pos;的变量,保存现在的朝向和现在的箭的位置,然后在shoot里面通过这个变量获取朝向和位置

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