You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现角色向前行走至碰壁后180°转向并重复该动作?

碰壁检测与180°转向实现方案

要实现角色碰壁后转向的逻辑,Unity里有两种实用的实现方式,结合你现有的代码修改即可:

方案一:碰撞器触发转向

这种方式依赖Unity的物理碰撞系统,步骤如下:

  1. 给角色添加Collider(比如胶囊碰撞器CapsuleCollider)和Rigidbody,记得勾选Rigidbody的「Is Kinematic」,避免物理引擎干扰自定义移动逻辑
  2. 给墙体添加Collider(比如盒子碰撞器BoxCollider),不需要勾选Is Trigger
  3. 给墙体设置标签Wall(在Inspector的Tag下拉框里选择「Add Tag」创建)

修改你的Enemy脚本:

public class Enemy : MonoBehaviour
{
    public float speed = 5;
    public Vector3 userDirection = Vector3.forward;   

    void Update()
    {
        transform.position += userDirection * speed * Time.deltaTime;
    }

    // 碰撞触发时调用
    void OnCollisionEnter(Collision collision)
    {
        // 只响应墙体碰撞
        if (collision.gameObject.CompareTag("Wall"))
        {
            // 反转移动方向
            userDirection = -userDirection;
            // 同步旋转角色朝向
            transform.rotation = Quaternion.LookRotation(userDirection);
            // 想要旋转动画的话,可以换成transform.Rotate(0, 180, 0); 或者用Lerp做平滑旋转
        }
    }
}

方案二:射线检测(提前预判碰撞)

如果担心碰撞检测有延迟,或者不想依赖物理组件,可以用射线主动检测前方障碍物:

public class Enemy : MonoBehaviour
{
    public float speed = 5;
    public Vector3 userDirection = Vector3.forward;
    public float detectDistance = 1f; // 检测距离,根据角色尺寸调整,比如角色半径+0.1

    void Update()
    {
        transform.position += userDirection * speed * Time.deltaTime;

        // 从角色位置向前发射射线
        Ray ray = new Ray(transform.position, userDirection);
        if (Physics.Raycast(ray, out RaycastHit hit, detectDistance))
        {
            // 命中墙体时转向
            if (hit.collider.gameObject.CompareTag("Wall"))
            {
                userDirection = -userDirection;
                transform.rotation = Quaternion.LookRotation(userDirection);
            }
        }

        // 调试用:在Scene视图显示射线(发布时可以删掉)
        Debug.DrawRay(transform.position, userDirection * detectDistance, Color.red);
    }
}

两种方案都能实现需求,选哪种看你的场景:碰撞器方式适合物理交互多的场景,射线检测更轻量化,适合简单的巡逻逻辑。

内容的提问来源于stack exchange,提问作者Daugirdas Pelanis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:55:38