使用Unity开发坦克大战游戏(五)敌人AI的编写与优化

本文介绍如何在Unity中实现坦克大战游戏的敌人AI,包括坦克的自动攻击、旋转、随机移动策略以及碰撞后的响应优化,旨在提升游戏体验。

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

攻击可以让敌人三秒钟攻击一次,坦克的移动可以使用随机出随机出v和h的值

坦克自动攻击

void Update()
{
   
   

   //攻击的时间间隔
   if (timeVal > 3f)
   {
   
   
       Attack();
   }
   else
   {
   
   
       timeVal += Time.deltaTime;
   }
}
private void Attack()
{
   
   
   //实例化函数 第一个参数为object,第二个为位置,第三个为旋转
   Instantiate(bulletPrefab, transform.position, Quaternion.Euler(bulletEulerAngles));
   timeVal = 0;

}

坦克旋转

添加计时器。

    private float timeValChangeDirection; //改变方向的时间计时器
    private float v;
    private float h;

随机数移动,往下移动的概率最大,往上移动的概率最小,2s移动一次

              if(timeValChangeDirection >= 2f)
        {
   
   
            int num = Random.Range(0, 8);//往下面走的几率最大
            if(num > 5)
            {
   
   
                v = -1;
                h = 0;
            }
            else if(num == 0)   //往上走的几率最小
            {
   
   
                v = 1;
                h = 0;
            }
            else if(num > 0 && num <= 2)
      
游戏分里外两个部分组成,里部分(用户不可见) 通过里部分执行判断,地图数组更改,和各种值的改变。更改完里部分再根据相应变化更改表部分。(用户可视部分)表部分的打印通过gotoxy去到相应坐标再printf打印出字符,通过文本函数改变文字字体颜色文字背景颜色字符组合实现图形界面。 程序通过 计数器+循环判断 的思想,类似单核cpu的线程实现(单线程在不同程序/函数间来回执行)省去了线程。(具体过程在功能设计描述有详细描述)AI实现加强依赖于rand随机函数的运用,进一步强化AI,增加游戏乐趣 功能方面,游戏参考于80年代任天堂红白机(FC/FamilyComputer)上的游戏坦克大战(Battle City),包括地图,游戏模式等等(当时的游戏直接烧在电路板上)。所以游戏平衡方面已经有了很好的参考,无需再花大量时间测试平衡性。 但诸如地图中的树林元素,随机道具等没有实现。但较之原版,该游戏由C/C++编写PC运行,由字符界面实现游戏画面。原版一辆坦克的子弹未消失之前不能发射第二颗。导致子弹打击远处CD长,近处CD短。该游戏每个子弹都有相同CD,子弹未消失只要CD达到即可发射第二颗,第三颗…增加了真实性,相较于原版是个改进。且考虑到PC性能不一内置了游戏速度调整。玩家可根据PC性能调整至合适的速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值