qq_43532833 2021-02-18 16:59 采纳率: 0%
浏览 59

unity2d敌人跟踪时会和玩家一起跳跃,请问如何禁止敌人的跳跃让他只在x轴上跟踪?

 追踪代码如下。这个问题真的把我难到了,希望有大佬能帮忙解答下,谢谢!

​
void Update()
    {
        //判断玩家与BOSS之间的距离并存储
        float distance = Vector2.Distance(PlayerController.player_Transform.position,transform.position);
        //如果BOSS与玩家之间的距离大于5时,Trace_keep = true
        if (distance>5)
        { 
            Trace_keep = true;
            if (Trace_keep == true)
            {
                //追踪,boss存储了刚体组件
                transform.position = Vector2.MoveTowards(boss.position, PlayerController.player_Transform.position, 0.2f);
            }
        }    
        //如果BOSS与玩家之间的距离小于或等于3时,停止追踪
        else if (distance<=3)
        {
            Trace_keep = false;
        }
    }

​
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 11:49
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要阻止敌人仅在水平方向(X轴)上跟随玩家,您可以使用Transform.Translate()方法将敌人移动到一个特定位置,并确保其保持与玩家相同的速度。

    首先,在Update()函数中添加以下逻辑:

    // 如果玩家与Boss的距离大于5
    if(Vector2.Distance(PlayerController.player_Transform.position,transform.position) > 5)
    {
        // 将Boss的当前位置设置为Player的位置
        transform.position = PlayerController.player_Transform.position;
    
        // 让Boss以相同的速度跟随玩家
        transform.Translate(PlayerController.player_Transform.right * Time.deltaTime, Space.World);
    }
    

    这将在Boss沿X轴向右移动的同时,使其与玩家保持相同的X轴速度。这样,即使Boss也遵循Y轴上的运动规则,它也将始终位于玩家的左侧。

    评论

报告相同问题?

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振