Unity车轮碰撞器WheelCollider写的简单敌人AI——自动追踪汽车

简单敌人AI——自动追踪汽车

这是在一次专业课的大作业里面用到的自动追踪玩家的汽车AI,追踪玩家控制的汽车,碰撞对玩家造成伤害。

为什么不使用unity的使用自带的Navigation寻路组件呢?因为如果使用unity的使用自带的Navigation寻路组件的话,很难模拟汽车的真实效果,还有轮胎的滚动和转弯,所以想了想得到了以下的解决方案。

我的水平不是很高,这只是对我学习的一个记录,一个简单的思路,希望可以帮助的一些有需要的、像我一样的新手程序猿。

汽车AI的基本原理

AI的原理的话就是,就是判断玩家控制的汽车在AI汽车的方位,从而决定AI的应该是加速还是减速,左转还是右转,最终的目的就是撞向玩家控制的汽车,对玩家造成伤害。

那怎么样判断玩家在AI的什么方位呢?这里需要用到两个角度。
∠A判断玩家在敌人的左右∠B判断玩家在敌人的前后
如图所示,当∠A小于90°玩家在敌人右侧,当∠A大于90°,玩家在敌人左侧;当∠B小于90°玩家在敌人前侧,当∠B大于90°,玩家在敌人后侧侧。

当然敌人和玩家应该在同一个平面,如果有高度差的话,就要让两个向量的y轴值等于0,然后再计算两个向量的夹角。

汽车AI的代码

我采用了两个变量steerValue,motorValue,来动态的控制汽车的转向和前进。

当玩家在敌人的右侧,steerValue为0-1之间的数,当玩家在敌人的左侧,当steerValue为(-1)-0之间的数,具体的大小和∠A有关。当steerValue为正数时,敌人汽车就会向右边拐弯。当steerValue为负数时敌人汽车就会向左边拐弯。

当玩家在敌人的前侧,motorValue就会0.5-1之间,当玩家在敌人的后侧,motorValue就会0.3~0.5之间,具体大小和∠B角度有关。当前进的力越小,汽车转弯也会更加的方便,掉头之后玩家所在的位置成为了敌人的前方,motorValue就会0.5-1之间,AI就会加速追踪玩家。

代码:

    void TrackPlayer()
    {
        //求出两向量之间
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,关于Unity自动生成敌人Unity2D AI敌人自动追踪的问题,我可以继续提供一些建议。 对于自动生成敌人,我们可以使用Unity中的预制体(Prefab)来实现。具体地说,你可以在项目中创建一个敌人预制体,包含敌人的模型、动画、碰撞体、脚本等元素。然后,你可以在场景中放置一个空对象作为敌人生成,编脚本来实现自动生成敌人的功能。 在脚本中,你可以使用Instantiate方法来生成敌人实例。具体地说,你可以将敌人预制体作为参数传入,生成一个新的敌人实例,并设置它的初始位置、属性等信息。你可以使用Random类来随机生成敌人的位置和属性,使得每次生成的敌人都不同。 对于敌人自动追踪,你可以使用Unity中的NavMeshAgent组件来实现。具体地说,你可以为敌人添加一个NavMeshAgent组件,使它能够在场景中自动寻路。然后,你可以编代码来实现敌人追踪行为,例如让敌人朝向玩家并向其移动。 除此之外,你还可以为敌人添加视野范围、攻击距离等限制,使得敌人只有在一定范围内才会追踪玩家,并只有在一定距离内才会攻击玩家。你可以使用Collider组件和Raycast来实现这些限制。 总的来说,Unity提供了很多方便的工具和功能,可以帮助你实现自动生成敌人AI追踪等功能。如果你需要更具体的代码实现或者有其他问题,可以继续向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值