Unity 3D做2D坦克大战--敌人自动攻击AI编写
敌人AI攻击方法的编写
老师 | Trigger
学习者 |小白
出品 | Siki 学院
public class Enemy : MonoBehaviour
{//属性值public float movespeed = 3;private Vector3 bullectEulerAngles;private float v = -1;private float h;//引用private SpriteRenderer sr;public Sprite[] tanksprite;// 上 右 下 左public GameObject bullectPrafabs;public GameObject explosionPrefab;//计时器private float timeVal;private float timeValChangeDirection;//改变方向的计时器private void Awake(){sr = GetComponent<SpriteRenderer>();} void Update(){//攻击的时间间隔if (timeVal >= 3f){Attack();}else{timeVal += Time.deltaTime;}}private void FixedUpdate(){Move();}private void Attack(){if (Input.GetKeyDown(KeyCode.Space)){Instantiate(bullectPrafabs, transform.position, Quaternion.Euler(transform.eulerAngles + bullectEulerAngles));timeVal = 0;}}//坦克的移动方法private void Move(){if (timeValChangeDirection >= 4)//如果攻击后4秒产生转向{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)//向左走{h = -1;v = 0;}else if (num > 2 && num <= 4)//向右走{h = 1;v = 0;}timeValChangeDirection = 0; //计时器清零}else{timeValChangeDirection += Time.fixedDeltaTime; //计时器累加}transform.Translate(Vector3.up *this.v* movespeed * Time.fixedDeltaTime, Space.World);if (v < 0){sr.sprite = tanksprite[2];bullectEulerAngles = new Vector3(0, 0, -180);}else if (v > 0){sr.sprite = tanksprite[0];bullectEulerAngles = new Vector3(0, 0, 0);}transform.Translate(Vector3.up * v * movespeed * Time.fixedDeltaTime, Space.World);if (v != 0){return;}transform.Translate(Vector3.right * h * movespeed * Time.fixedDeltaTime, Space.World);if (h < 0){sr.sprite = tanksprite[3];bullectEulerAngles = new Vector3(0, 0, 90);}else if (h > 0){sr.sprite = tanksprite[1];bullectEulerAngles = new Vector3(0, 0, -90);} }private void Die(){ //爆炸特效Instantiate(explosionPrefab, transform.position, transform.rotation);//死亡方法Destroy(gameObject);}private void OnCollisionEnter2D(Collision2D collision){if (collision.gameObject.tag == "Enemy"){timeValChangeDirection = 4;}}}
SiKi学院有免费课程可以参考,不懂可以参考视频!
Unity 3D做2D坦克大战--敌人自动攻击AI编写相关推荐
- unity自动生成敌人_Unity 3D做2D坦克大战--敌人自动攻击AI编写
敌人AI攻击方法的编写 老师 | Trigger 学习者 |小白 出品 | Siki 学院 ```java public class Enemy : MonoBehaviour { //属性值 pub ...
- Unity 3D做2D坦克大战,控制图片切换朝向的2种方法。
老师 | Trigger 学习者 |小白 出品 | Siki 学院 第一种更换图片切换朝向的方法: public class Player:MonoBehaviour{public float mov ...
- Unity开发游戏--2D坦克大战(一)
Unity开发游戏--2D坦克大战(一) 前言 开发环境 场景搭建 新建工程 导入素材 设置Camera 设置游戏窗口大小 保存场景 创建角色 创建图片角色 修改角色大小 生成Prefab 前言 游戏 ...
- Unity3D_(游戏)2D坦克大战 像素版
2D坦克大战 像素版 游戏规则: 玩家通过上.下.左.右移动坦克,空格键发射子弹 敌人AI出身时朝向己方大本营(未防止游戏快速结束,心脏上方三个单位障碍物设为刚体) 当玩家被击杀次数>=3 ...
- 用python做一个坦克大战
这是一个非常有意思的项目!如果你想用 Python 来做一个坦克大战游戏,可以考虑使用 Pygame 这个库.它是一个专门用于制作游戏的 Python 库,能够帮助你快速开发出一个坦克大战游戏. 首先 ...
- 基于ComblockEngine+Unity的联机版坦克大战(一)
文章目录 阶段目标 环境搭建 流程设计 相关说明 相关代码 上述源码地址 写在前面的一段话: 之前准备用LuaServer写一个简单moba手游,后来觉得,LuaServer毕竟是前公司内部的产品,不 ...
- 小白学习Unity 3D做经典游戏坦克大战日常
老师 | Trigger 学习者 |小白 出品 | Siki 学院 Hello,小伙伴们.接下来小白跟Trigger老师做一款2D游戏坦克大战.从素材.代码到场景和UI的游戏开发.小白把日常遇到的问题 ...
- Unity学习笔记5:2D坦克大战
之前看了很长一段时间的视频,但是基本没有手动操作过,究竟沉淀了多少还真难说得清楚. 所以直接看实例视频跟着做了. 视频地址:http://www.sikiedu.com/my/course/90 un ...
- 超详细 Unity 大作业之 坦克大战
本次大作业中,我选择的主题是制作一款简单的坦克大战小游戏,实现此项目借鉴并使用了BiliBili教程及资源和学姐的博,利用Unity自带的3D导航技术实现敌人坦克的自动导航. 演示视频:Unity大作 ...
最新文章
- GB:徐健/王师/黄适合作开发微生物组测序新方法2bRAD-M
- 网站如何才能吸引用户,增加网站点击率?
- 【grunt整合版】30分钟学会使用grunt打包前端代码
- 遭银行账号诈骗最快最有效自救法
- 5个技巧让你更好的编写 JavaScript(ES6) 中条件语句
- 局域网网速太慢的问题
- WebForm中 页面传参的总结
- Java主线程等待所有子线程执行完毕再执行解决办法集
- mysql key语句_mysql建表语句key的含义
- 通过企业微信服务端API接口进行群发应用消息
- 32位xp系统识别4G以上内存
- 【OpenCV】OpenCV实战从入门到精通之五 -- 教你使用Rect()函数
- 凯恩帝1000对刀图解_KND数控车床对刀方法
- 如何设置路由器wifi的用户黑名单?(使别人不能连接你家WIFI)
- 京东2021年全渠道GMV同比增长近80% 全年营收同步增长27.6%
- 企业如何管理终端软件安装
- 阿里云人机验证(无痕)完整流程以及注意事项
- 锐捷客户端-您不在许可范围中,请确认您的权限
- 第1章 持续交付2.0
- Android修改user版本默认关闭开发者选项模式,eng版本默认打开开发者选项模式