Unity移动物体碰撞后自动转身移动

该代码示例展示了在Unity3D中如何使用Rigidbody2D进行敌人运动,并通过碰撞检测实现遇到墙时自动翻转方向的效果。方法包括通过Tag和碰撞物体的层来检测碰撞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a1d427f9a6e84afebde13a2ae564132d.png

05709ca56f3f459bb0d2de62ffe0035e.png

 代码部分:

using UnityEngine;

public class enemy_1 : MonoBehaviour
{
    Rigidbody2D rig;
    int dir = 1;
    Transform front;
    void Start()
    {
        rig = GetComponent<Rigidbody2D>();
        front = transform.Find("front");
    }

    private void FixedUpdate()//刚体运动放在FixUpdate里
    {
        //定义每秒几米的速度
        rig.velocity = new Vector2(5 * dir, GetComponent<Rigidbody2D>().velocity.y);

        //方法一:通过Tag
        Collider2D hit = Physics2D.OverlapPoint(front.position);
        if (hit != null)
        {
            if (hit.tag == "Wall")
            {
                Flip();
            }
        }

        //方法二:通过定义碰撞物体的层来实现转身
        //在第六层里碰撞物体tag=Wall时转身
        //Collider2D[] hits = Physics2D.OverlapPointAll(front.position, 1<<6);
        //foreach(var item in hits)
        //{
        //    if (item.tag == "Wall")
        //    {
        //        Flip();
        //        break;
        //    }
        //}
    }

    void Flip()
    {
        //利用localScale镜像
        Vector2 v = transform.localScale;
        v.x *= -1;
        transform.localScale = v;
        dir *= -1;
    }

    void Update()
    {
        
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏轼轼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值