private void Update()

{

hpObj.rotation = mainCamera.rotation; //血条始终面向镜头

if (GameMain.instance.gameOver) //游戏结束播放待机动画

anim.Play("idle");

else if (state == EnemyState.forward)

EnemyForward();

}

public int view; //视野

Quaternion wayDir; //前进方向

MainCity target; //主城

Transform way; //正在走的路

public float speed;

//前进方法

private void EnemyForward()

{

RaycastHit hit;

//看见攻击目标则攻击

if (Physics.Raycast(eye.position, transform.forward, out hit, view, LayerMask.GetMask("City")))

{

state = EnemyState.attack;

anim.Play("attack");

target = hit.collider.GetComponent();

}

//斜下方30°打射线检测前方道路

if (Physics.Raycast(eye.position, Quaternion.AngleAxis(30, transform.right)

* transform.forward, out hit, 50, LayerMask.GetMask("Way")))

{

Debug.DrawLine(eye.position, hit.point, Color.blue);

//发现未走过的道路,获取该道路,朝向该路通往的方向

if (!ways.Contains(hit.collider))

{

ways.Add(hit.collider);

way = hit.transform;

wayDir = Quaternion.LookRotation(way.forward);

}

}

else //前方没路了发射球形射线检测周围是否有路

{

Collider[] colliders = Physics.OverlapSphere(transform.position, 8, LayerMask.GetMask("Way"));

for (int i = 0; i < colliders.Length; i++)

{

//发现未走过的道路,获取该道路,朝向该路通往的方向

if (!ways.Contains(colliders[i]))

{

way = colliders[i].transform;

wayDir = Quaternion.LookRotation(way.forward);

break;

}

}

}

//获取与脚下道路x轴上偏差值,好让自身走在路中间

float offset = 0;

if (way != null)

{

Vector3 distance = transform.position - way.position;

offset = Vector3.Dot(distance, way.right.normalized);

}

//面向该路指向的方向前进

transform.rotation = Quaternion.RotateTowards(transform.rotation, wayDir, speed * 20 * Time.deltaTime);

transform.Translate(-offset * Time.deltaTime, 0, speed * Time.deltaTime);

}

塔防游戏c语言源代码,用Unity开发一款塔防游戏(一):攻击方设计相关推荐

  1. 用Unity开发一款塔防游戏(一):攻击方设计

    大家好.偶尔想起了这个手把手教学的.但现已长满杂草的坑,还是来挖几铲子. 这一期的游戏是最常见的类型之一--塔防. 塔防游戏相信大家并不陌生,几个主要元素如下: 1.敌方士兵 2.我方防御塔 3.我方 ...

  2. python可以开发3d游戏吗_用python3从零开始开发一款烧脑射击游戏#3

    上回说到我们已经可以控制小方块的移动了,现在我们要把这个小方块放置到游戏场景里 剥去美术的外壳,游戏场景其实就是一个标记了玩家可行走与不可行走的空间 对于2D游戏,它是一个平面网格,3D游戏就是一个3 ...

  3. 用Unity开发一款2D横版游戏demo

    # LanW Game Project 目录 (一) 介绍 (二) 安装教程 (三) 开发流程 1.  新建工程 2.  设置人物 3.  控制主角的移动 4.   添加切换动作的动画 5.   镜头 ...

  4. 浅谈Unity与VR产业,用Unity开发第一款VR应用

    部分内容为整合与装载 浅谈VR VR(Virtual Reality的缩写,中文翻译-虚拟现实)概念早在80年代初就被提出来的,其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段. 中国 ...

  5. 实战:一天开发一款内置游戏直播的国产版Discord应用【附源码】

    游戏直播是Discord产品的核心功能之一,本教程教大家如何1天内开发一款内置游戏直播的国产版Discord应用,用户不仅可以通过IM聊天,也可以进行语聊,看游戏直播,甚至自己进行游戏直播,无任何实时 ...

  6. html小游戏代码_研发实践:Mozilla分享如何开发一款WebVR小游戏

    文章相关引用及参考:mozvr 本文来自Mozilla的Josh Marinacci (映维网 2019年02月06日)在倡导新技术时,我总是尝试采用现实世界开发者的方式,而对于WebVR,开发一款游 ...

  7. Second Dinner 工作室正与漫威合作,开发一款漫画改编游戏

    Kotaku 的资深舅舅报道说,由前炉石执行制作人朱仲英(Hamilton Chu)领衔的 Second Dinner 工作室正与漫威合作,开发一款漫画改编游戏.该工作室规模很小,但骨干成员全部来自暴 ...

  8. unity塔防游戏怪物转向_玩一玩这款塔防游戏?

    关注上方蓝字获得更多内容 今日分享塔防游戏 塔防游戏,曾经也是风靡一时,非常受人喜欢的. 今天小皮分享的这款和保卫萝卜可以说是异曲同工,还是不错的. 该游戏拥有精美的画面,并且在形象设计上也制作的相当 ...

  9. html语言代码游戏,HTML语言源代码实例.doc

    HTML语言源代码实例 HTML语言源代码实例 第一个HTML示例 第一个HTML示例 HTML的基本结构. 换行标签 测试换行标签 天津公安警官职业学院 电教中心 授课教师 李平 强制不换行标签 测 ...

最新文章

  1. Lombok(1.14.8) - @Synchronized
  2. 神策用户画像 Demo 来了!(文末免费体验)
  3. bzoj4665小w的喜糖 dp+容斥
  4. 如何测试程序是否_软件开发过程中,如何进行自动化测试?Unit Test 和 UI Test
  5. C++ 多态实现的三个条件
  6. SP1043 GSS1 - Can you answer these queries I 猫树
  7. PHP中的__get()和__set()方法获取设置私有属性
  8. C++函数重载的概念
  9. 如何将特定提交推送到远程,而不是之前的提交?
  10. Linux平台搭建Discuz
  11. 一文学会最常见的10种NLP处理技术(附资源代码)
  12. matlab bar 填充花纹,[转载]Matlab绘制柱状图采用不同图案填充
  13. 计算机音乐谱东演员,抖音计算机乐谱有哪些 抖音计算机乐谱分享
  14. 【数据挖掘】鸢尾花分析实验与数据降维
  15. PMP认证考试答题应试技巧
  16. 甲骨文数据库购买的价格(一)
  17. 推荐5款Windows桌面效率工具
  18. 什么是搜索词?有什么用?
  19. Java_09 快速入门 Java IO编程
  20. 任时光匆匆流走。。。。

热门文章

  1. 计算机cap怎么学,6大学计算机大学计算机CAP.pdf
  2. 戴森新一代Airwrap多功能造型器评测:现在都这么「卷」了吗?
  3. 如何用因果推断和实验驱动用户增长? | 7月28日TF67
  4. 一感冒就得红眼病,而且很严重怎么办
  5. 低调推广重疾险 滴滴公司的金融帝国美梦能否真正实现?
  6. 全球最好听的50首英文歌
  7. IQD文件模板以及cs7g.ini信息
  8. ERP系统-销售子系统-销售订单
  9. 【BI学习笔记】在Linux上安装Wyn Enterprise商业智能报表服务器
  10. Vue项目img标签图片加载失败/显示不成功,显示默认图片