unity2D:敌人自动移动(AI)

注:本篇为本人的学习笔记,详情见b站up:Michael-studio

版本信息:unity2020.3

实现内容:敌人左右走动

当然了 ,也会时不时跳一下发个子弹啥的,but咱还没学到那,哎嗨,不会。

纯代码,基本思路就是:给敌人限制一个左右范围,判断-到最左侧了则向右转,往右移动,到最右侧了则向左转,往左移动

转向改transform.localscale,运动改rigidbody.velocity

代码如下

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Enemy_Frog : MonoBehaviour

{

    private Rigidbody2D rb;

    public float Speed;

    private float leftPoint,rightPoint;//左右终止点

    private bool faceleft=true;


 

    void Start()

    {

        rb=GetComponent<Rigidbody2D>();

        leftPoint=transform.position.x-2;

        rightPoint=transform.position.x+2;

        //transform.DetachChildren();//改变该节点的transform时,该节点的孩子不受影响

    }


 

    void Update()

    {

        Movement();

    }

    void Movement()

    {

        if(faceleft)

        {

            rb.velocity=new Vector2(-Speed,rb.velocity.y);

            if(transform.position.x<leftPoint)

            {

                transform.localScale=new Vector3(-1,1,1);

                faceleft=false;

            }

        }else

        {

            rb.velocity=new Vector2(Speed,rb.velocity.y);

            if(transform.position.x>rightPoint)

            {

                transform.localScale=new Vector3(1,1,1);

                faceleft=true;

            }

        }

    }

}

应该还有别的更简单的方法,欢迎留言,because我也想知道

可以看到这里我限制左右是直接写死了,左边就是enemy-2,右边是enemy+2。你可以设为public这样可以随时改

另外一个小ps:

transform.DetachChildren();//改变该节点的transform时,该节点的孩子不受影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Karon_NeverAlone

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

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

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

打赏作者

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

抵扣说明:

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

余额充值