Scanvenger游戏制作笔记(五)控制敌人的移动

本文介绍了如何在Unity3D中创建敌人的移动脚本,包括使用BoxCollider、碰撞检测和基于玩家位置的移动逻辑。通过敌我距离判断和方向调整,实现了敌人的智能移动。系列链接可供进一步学习。


前言

本文章是我学习SIKI学院Scanvenger项目所做笔记,原视频请自行搜索,
材质等相关资源请微信搜索SIKI学院公众号,回复120获取。源码也在里面。
游戏引擎:Unity3D2020.3
之前的Prefabs内容

一、创建敌人脚本和BoxCollider

二、修改碰撞脚本

在这里插入图片描述

三、修改移动脚本

public class Enemy : MonoBehaviour
{


    // 目标位置
    private Vector2 targetPosition;


    // 获取主角标签
    private Transform player;

    // 移动速度
    public float smoothing = 3;

    // 使用刚体控制运动
    private Rigidbody2D rigidbody;


    private void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player").transform;
        rigidbody = GetComponent<Rigidbody2D>();
        targetPosition = transform.position;
    }


    private void Update()
    {
        rigidbody.MovePosition(Vector2.Lerp(transform.position, targetPosition, smoothing * Time.deltaTime));


    }

    public void Move()
    {

        Vector2 offset = player.position - transform.position;     // 判断主角的偏移
        if (offset.magnitude < 1.1f)
        {
            // 攻击
        }
        else
        {
            float x = 0, y = 0; // 默认移动都是0
            // 判断是离Y偏移还是X偏移
            if (Mathf.Abs(offset.y) > Mathf.Abs(offset.x))
            {
                // 按照Y轴移动
                if(offset.y < 0)
                {
                    y = -1;
                }
                else
                {
                    y = 1;
                }

            }
            else
            {
                // 按照X轴移动
                if (offset.x > 0)
                {
                    x = 1;
                }
                else
                {
                    x = -1;
                }
                
            }
            targetPosition += new Vector2(x, y);
        }

    }

}

四、存放所有敌人

在gameManager中找到所有的敌人
在这里插入图片描述
在enemy中存放所有敌人
在这里插入图片描述
通知GameManager玩家移动

在这里插入图片描述
设置玩家移动两步,敌人移动一步的规则
创建一个bool型记录玩家是否在休息

在这里插入图片描述

系列链接

Scanvenger游戏制作笔记(一)Unity3D状态机转换
Scanvenger游戏制作笔记(二)控制玩家操作
Scanvenger游戏制作笔记(三)Unity3D创建对墙体的攻击
Scanvenger游戏制作笔记(四)Unity3D控制角色吃食物
Scanvenger游戏制作笔记(五)控制敌人的移动
Scanvenger游戏制作笔记(六)Unity3D创建游戏UI的显示
Scanvenger游戏制作笔记(七)Unity3D控制游戏的失败
Scanvenger游戏制作笔记(八)Unity3D关卡胜利条件的判断
Scanvenger游戏制作笔记(九)Unity3D创建声音

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值