unity自动生成敌人_Unity 3D做2D坦克大战--敌人自动攻击AI编写

敌人AI攻击方法的编写

老师 | Trigger

学习者 |小白

出品 | Siki 学院

```java

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();

}

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学院有免费课程可以参考,不懂可以参考视频!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python删除txt指定内容_使用Python删除文本文件中的部分内容 | 学步园

为了学习英语&#xff0c;我把从网上下载下来的电影转换成纯MP3文件&#xff0c;放到iTouch里去了&#xff0c;这样就可以直接练习听力了&#xff0c;另外把下载下来的字幕也放进去&#xff0c;听不懂的时候可以看&#xff0c;但有一个问题&#xff0c;网上载下来的字幕格式都如…

电信计算机知识考试,2020中国电信考试试题——专业知识一

1、我国对独立型STP设备要求其信令链路数不得小于( )A、7000MSU/s&#xff1b;B、10000MSU/s&#xff1b;C、14000MSU/s&#xff1b;D、20000MSU/s2、GSM的多址方式为( )A、FDMA&#xff1b; B、TDMA&#xff1b; C、CDMA&#xff1b; D、FDMA-TDMA混合技术3、以下属于被叫控制…

vue实现进度条隐藏_实现带有进度条的Vue延迟加载

下面Vue.js栏目给大家介绍一下给Vue的惰性加载添加进度条的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。简介通常用 Vue.js 编写单页应用(SPA)时&#xff0c;当加载页面时&#xff0c;所有必需的资源(如 JavaScript 和 CSS 文…

full outer join 与full join的区别_sleep、yield、join都是干啥的? sleep与wait有啥区别?中篇[十五]...

点击上方 “ 布衣码农 ” &#xff0c;免费订阅~选择“ 设为星标 ”&#xff0c;第一时间免费获得更新~「布衣码农」用不到却又不得不学习了解的底层方法1。Object中的wait、notify、notifyAll&#xff0c;可以用于线程间的通信&#xff0c;核心原理为借助于监视器的入口集与等…

npu算力如何计算_异构计算神器来了,它能带来性能革命吗

前言&#xff1a;优化差有多要命&#xff1f;3A大作告诉您说到最近游戏圈子里的热门话题&#xff0c;刚刚在全平台上线的某“国产3A大作”显然绝对值得一提。一方面来说&#xff0c;靠着“抽卡化单机游戏”的设计&#xff0c;以及投入几十万元都难以实现全角色满状态的高氪金程…

四川大学计算机专业贵州分数线,四川大学2016年在贵州省高考各专业录取分数线...

四川大学2016年在贵州各专业录取分数线省份 科类 录取专业 录取最高分 录取最低分 录取平均分贵州 文科 旅游管理类 640 639 639.5贵州 文科 历史学类 641 636 639贵州 文科 新闻传播学类 645 639 641.33贵州 文科 信息资源管理 640 637 638.5贵州 文…

画股票图csdn_这个股票今天是要弄啥?

点击上方蓝色字体&#xff0c;关注我们作者 | 四叶草编辑 | 易小投大盘点评今天市场上午走势相对弱势&#xff0c;盘中只有杀出一点点急跌的恐慌盘&#xff0c;有一些盘中的做T机会&#xff0c;但是确定性不是特别高&#xff0c;毕竟盘中的急跌相对幅度有限。下午指数随着一些概…

python创建字符串数组_如何创建任意长度字符串的numpy数组?

您可以通过创建dtype object数组来完成此操作.如果您尝试将长字符串分配给普通的numpy数组,它会截断字符串&#xff1a; >>> a numpy.array([apples, foobar, cowboy]) >>> a[2] bananas >>> a array([apples, foobar, banana], dtype|S6) 但是当…

淮阴工学院计算机学院机房,实验室开放

计算机工程实验中心坚持每天14小时开放(7:30-21:30)&#xff0c;在完成基础和专业等实验教学任务外&#xff0c;还承担了各级各类培训及考试、计算机技能实训、工程设计与开发等任务&#xff0c;同事开展了多种形式的社会服务&#xff0c;以及对周边学校的服务。本中心每天坚持…

照片识别出错_云投诉丨四川德阳市民文明手册咋满篇乱码?回应:电脑识别问题,已全部收回...

封面新闻记者 王攀 王祥龙“这是密码吗&#xff1f;”9月23日&#xff0c;有四川德阳市民反映&#xff0c;该市发放的《德阳市民文明手册》看不懂。从市民提供的照片上看&#xff0c;手册内页上全是乱码。当前&#xff0c;德阳市正争创全国文明城市&#xff0c;有市民表示&…

websocket中发生数据丢失_获取使用关闭代码1006关闭websocket的原因

关闭代码1006是一种特殊的代码&#xff0c;它表示浏览器实现异常(本地)关闭了连接。如果您的浏览器客户端报告关闭代码1006&#xff0c;那么您应该在websocket.onerror(evt)事件中查看详细信息。但是&#xff0c;Chrome很少会向JavaScript端报告任何接近代码1006的原因。这可能…

好身材大姐姐学计算机惊喜用英语,英语作文:一个大大的惊喜A Big Surprise

英语作文:一个大大的惊喜A Big Surprise在日常学习、工作或生活中&#xff0c;大家一定都接触过作文吧&#xff0c;作文一定要做到主题集中&#xff0c;围绕同一主题作深入阐述&#xff0c;切忌东拉西扯&#xff0c;主题涣散甚至无主题。那么&#xff0c;怎么去写作文呢&#x…

2篇word文档比较重复率_本科论文写作重复率高的原因,毕业论文降重技巧总结!...

论文重复率的问题&#xff0c;是大学高等院校都比较关心的一点&#xff0c;大学生在论文写完以后&#xff0c;都要经过知网论文检测&#xff0c;在查看重复报告的时候&#xff0c;无法直视&#xff0c;因为论文重复率提高啦。经过几次论文降重修改还是没法降低论文重复率。那么…

如何做电脑桌面应用_CAD批量转PDF?一分钟教会你CAD如何转PDF,两种方法任你选择!...

作为从事CAD设计的我&#xff0c;已经深深的了解到了CAD设计行业的辛苦。dwg格式的文件作为CAD文件格式常见的专业格式&#xff0c;它能够很好的帮助我们保存好绘制好的CAD图纸。现在几乎在很多领域都可以见到&#xff0c;有的时候会根据需要对CAD图纸进行格式转换。很多的网友…

转本计算机考试题目,2011江苏专转本计算机考试模拟试题答案

一、单选题1、上网访问网站&#xff0c; 就是访问存放在__?__上的相关文件。A、Web服务器B、路由器C、网关D、网桥参考答案A2、在软件的分层中&#xff0c;直接与用户、硬件打交道的是__?__。A、应用软件B、网络通信软件C、操作系统D、语言处理软件参考答案C3、某显示器的分辨…

添加列属性_css多列属性

多列属性多列布局类似报纸或杂志中的排版方式&#xff0c;主要用以控制大篇幅文本。1、column-count : 分隔列数说明&#xff1a;属性规定元素应该被分隔的列数用于&#xff1a;除table外的非替换块级元素, table cells, inline-block元素2、column-gap &#xff1a; 设置列与列…

pyautogui typewrite_解放双手:Pyautogui帮你work

今天介绍一个很有用的python库——Pyautogui&#xff0c;它可以通过屏幕的xy坐标系统来确定目标位置&#xff0c;进而控制鼠标和键盘发送虚拟的点击和输入任务。这对于你要完成机械重复枯燥的电脑操作来说非常地方便。安装Pyautogui库很简单&#xff0c;命令窗口输入&#xff1…

win7 右键计算机 服务 设备管理器,win7系统计算机右键菜单添加设备管理器的操作方法...

今天和大家分享一下关于对win7系统计算机右键菜单添加设备管理器设置的方法&#xff0c;在使用win7系统的过程中经常不知道如何去对win7系统计算机右键菜单添加设备管理器进行设置&#xff0c;有什么好的办法去设置win7系统计算机右键菜单添加设备管理器呢&#xff1f;在这里小…

年月跨度_不畏困难,砥砺前行 ——国内最大跨度管桁架工程成功首滑

8月3日下午&#xff0c;由陕建机施(江苏)第二总部第一工程公司承建的330米大跨度管桁架工程——芜湖新兴铸管综合料场封闭工程顺利实现首跨滑移&#xff0c;创下国内最大跨度管桁架工程滑移记录。该工程包含一个管桁架主体大棚结构&#xff0c;两个东西毗屋网架附属结构以及一个…

python 定时器_python定时器apscheduler及一个django的小tips

类似于windows系统里的计划任务&#xff0c;需要按特定的时间周期&#xff0c;去调度执行一项任务。python里有apscheduler组件。分有阻塞式与非阻塞式&#xff0c;如下是阻塞式&#xff0c;就是不需要自己去写循环。from apscheduler.schedulers.background import BlockingSc…