当前位置: 首页 > news >正文

满亦工作室 网站建设中国近期的军事大新闻

满亦工作室 网站建设,中国近期的军事大新闻,分类网站怎么做seo,网页设计尺寸pc端在之前的文章中,我介绍了如何开发一个FPS游戏,添加一个第一人称的主角,并设置武器。现在我将继续完善这个游戏,打算添加敌人,实现其智能寻找玩家并进行对抗。完成的效果如下: fps_enemy_demo 下载资源 首先是设计敌人,我们可以在网上找到一些好的免费素材,例如在Unity…

在之前的文章中,我介绍了如何开发一个FPS游戏,添加一个第一人称的主角,并设置武器。现在我将继续完善这个游戏,打算添加敌人,实现其智能寻找玩家并进行对抗。完成的效果如下:

fps_enemy_demo

下载资源

首先是设计敌人,我们可以在网上找到一些好的免费素材,例如在Unity商店里面有一个不错的免费素材, Low Poly Soldiers Demo | 3D 角色 | Unity Asset Store,里面提供了3D模型和动画,其收费版提供了更多的模型,武器以及动画,收费10美刀也不贵。这里我以收费版为素材,把其加到我之前开发的FPS游戏中。

下载资源后导入到项目中,然后在项目文件的LowPoly Soldiers的prefab目录下,可以看到有多个不同服装和武器的Prefab。选择一个拖动到项目中的Prefab目录。然后打开Prefab,在模型中找到其武器,在其枪口位置新增一个名为muzzle的空的GameObject,这将作为敌人发射子弹的位置。如下图:

点击这个Prefab的根对象,即左侧导航树的Soldier_marine variant,为其增加一个Capsule collider,调整其设置,使得这个Collider能覆盖整个人物。

增加一个Script的组件,重用之前创建的MuzzleEffect脚本。

添加一个Nav Mesh Agent组件,使得敌人能在烘培的路面上具备自动寻路的功能。

烘培路线

要让敌人能自动寻路,需要在场景中进行路线的烘培。打开菜单的Window->AI->Navigation,选择Bake,设置Agent的相关参数,然后点击Bake按钮即可。

定义敌人状态和动画切换

在项目的Scripts目录新增一个名为WanderingAI的Script文件,定义敌人的行为模式。这里我们可以定义敌人有行走,快跑,瞄准,射击,重载弹药,受伤害和死亡这几种行为。为了方便起见,在这个Script里面可以定义一个enum来统一管理当前的状态,如以下代码:

[Flags]
private enum EnemyStatus {Idle, Walk,Aim,AimLeft,AimRight,Shoot,Reload,Sprint,Damage,Death
}

在以上状态中,瞄准状态有三个,分别对应原地瞄准,向左移动瞄准和向右移动瞄准。

另外再定义其他的一些属性,并进行初始化,如以下代码:

[Header("Enemy speed")]
public float speed = 3.0f;
public float sprintSpeed = 5.0f;[Header("Enemy eyeview")]
public float eyeviewDistance = 500.0f;
public float viewAngle = 120f;
public float obstacleRange = 1.0f;[Header("Enemy behavior")]
public float aimPeriod = 3.0f;[Header("Shoot Setting")]
[SerializeField]
private Transform muzzleTransform;
[SerializeField] GameObject bulletPrefab;
public int ammo = 5;[Header("Enemy life")]
public int health = 10;private Animator _animator;
private Collider[] SpottedPlayers;
private GameObject bullet;
private MuzzleEffect muzzleEffect;
private long shootTS = 0;
private Vector3 prevPlayerPosition = new Vector3(100f, 100f, 100f);
private Vector3 enemyMuzzleDelta = new Vector3(0f, 2.0f, 0f);
private Vector3 playerPositionDelta = new Vector3(0f, 1.0f, 0f);
private Vector3 playerDirection;
private int currentAmmo; 
private float lerpValue = 10f;
private bool randomSearch = true;
private NavMeshAgent _agent;
private Coroutine corDiscoverPlayer = null;
private Coroutine corReload = nu
http://www.yayakq.cn/news/876599/

相关文章:

  • 成都装饰公司网站建设域名买好怎么开始做网站
  • 邯郸做网站哪家好重庆公司建设网站
  • 网站建设实训小组总结wordpress报错
  • 自助建站还是人工建站好wordpress如何跳转页面代码
  • 京东优惠券网站怎么做购物网站模块例子
  • 网站的宣传推广用wordpress案例
  • 大连网站建设蛇皮果电子商务网站建设实训报告主要内容
  • 西城改版网站免费空间申请网站
  • p2p网站建设时间柳城网站建设
  • 中英文双语网站站点深圳网站设计精选刻
  • wordpress friday网站seo内容优化
  • 房城乡建设部门户网站租房子做民宿在哪个网站
  • 实名认证域名可以做电影网站吗闵行网页设计师
  • 大庆开发网站公司多仓库版仓库管理网站建设源码
  • 外贸网站建设的好处wordpress如何建栏目
  • 体育网站建设方案留言板网站建设总结
  • 邵阳 网站开发 招聘app商城网站开发
  • 建筑人才网官方网站中国建筑科学院有限公司认证中心深圳响应式网站建设哪家好
  • 做网站会用到的代码单词前端seo优化
  • 上市的网站设计公司wordpress 导购站模板
  • 成都php网站制作程序员h5设计平台
  • 江都城乡建设局网站水处理网站模板
  • 盐城建设银行招聘网站设计师常用的设计软件有哪些
  • 门户网站建设报告郴州市网站建设科技
  • 如何在eclipse上做网站网络推广怎么做最有效
  • 网站的运营方式宁夏网站seo
  • 上海网站制作价格百度竞价托管公司
  • 企业网站上海 优帮云百度搜索资源平台官网
  • 做建材上哪个网站比较好湖北省住房与建设厅网站
  • 教育培训类网站建设模板建设银行资讯网站