SpaceShooter打飞机教程笔记(三)
七、射击功能
1.创建空命名为Shot Spawn为子弹挂载体,设置位置,获取子弹预制体,挂载体相对位置,实例化。(射出很多的子弹是什么问题,是因为FireRate未进行值设置,会导致发射频率很快,但可以加入进化版的改进内容。)
在PlayerManager.cs中添加下列代码
public GameObject shot; //获取子弹预制体public Transform shotSpawn; //子弹生成的父类public float fireRate; //子弹发射率private float nextFire; //计时器,下一次发射void Update(){if (Input.GetButton("Fire1") && Time.time > nextFire){nextFire = Time.time + fireRate;Instantiate(shot, shotSpawn.position, shotSpawn.rotation);}}
八、边界设定
用来界定活动区域,子弹触碰到会消失,流星触碰到会消失,敌机触碰到会消失,不会过多占有内存。
1.创建cube命名为Boundary,覆盖画面,去掉材质网格(Mesh Renderer)会变成透明,勾选Collider触发(Is Trigger),添加脚本(DestoryByBoundary.cs)实现摧毁子弹功能。
(为什么会无效,注意OnTriggerExit的单词拼写)
(为什么消掉了子类VXF,却没有消掉父类bolt,因为把触碰器放在了子类,修改放在父类会解决问题)
using UnityEngine;
using System.Collections;public class DestoryByBoundary : MonoBehaviour {void OnTriggerExit(Collider other){//详细信息查询trigger有关的APIDestroy(other.gameObject);}
}
九、旋转行星和摧毁行星
1.旋转功能,获取物体的角速度旋转angularVelocity,和随机insideUnitSphere让行星旋转。
2.创建空为Asteroid(重置),拖入行星,父类逻辑控制,子类纹理,增加Rigidbody,去掉重力,增加胶囊Collider,调整胶囊。
3.增加Mover脚本,给予负的速度。
4.增加RandomRotator脚本,使用钢体角速度的方法。
5.创建DestoryByContact.cs 脚本,利用OnTriggerEnter触碰方法摧毁接触物体,利用tag==“Boundary”来标记Boundary。
(会发生透明的情况,特别是立起来的时候,摄影机的位置要提高位置,物体出现在摄影机的后面导致部分透明无法显示)(怎么确定脚本放置的位置,根据脚本的目的)
RandomRotator.cs//行星的随机选择效果脚本
using UnityEngine;
using System.Collections;public class RandomRotator : MonoBehaviour {public float tumble;void Start(){GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * tumble;}
}
DestoryByContact.cs //销毁行星
using UnityEngine;
using System.Collections;public class DestoryByContact : MonoBehaviour {public GameObject explosion;public GameObject playerExplosion;void OnTriggerEnter(Collider other){if (other.tag == "Boundary" || other.tag == "Enemy"){return;}if (explosion != null){Instantiate(explosion, transform.position, transform.rotation);}if (other.tag == "Player"){Instantiate(playerExplosion, other.transform.position, other.transform.rotation);}Destroy(other.gameObject); //摧毁与小行星碰撞的物体Destroy(this.gameObject); //摧毁小行星}
}
SpaceShooter打飞机教程笔记(三)相关推荐
- SpaceShooter打飞机教程笔记(一)
这个教程大多网站都有,是一个飞机游戏的入门级和中等级的游戏教程. 学习unity也有段时间了,写写总结. 总结官方的视频和其他网站发布的视频,仅做分享学习作用. 一.工程设置 1.导入资源,了解资源内 ...
- SpaceShooter打飞机教程笔记(二)
下面的代码是每一单节中对应的代码,会在最后贴完整的代码. 代码的注释是个好东西,看了好些时间视频才把注释写好,也是一种劳动成果. 五.角色移动 1.添加Player脚本(PlayerManager.c ...
- SpaceShooter打飞机教程笔记(五)
十一.游戏控制 1.定义位置生成,取某轴的随机值. 2.生成和不旋转,Quaternion.identity. 十二.行星生成波 1.想让代码暂停,游戏没暂停的情况下,要使用协成的模式,IEnumer ...
- SpaceShooter打飞机教程笔记(四)
九.创建行星和摧毁行星 1.旋转功能,获取物体的角速度旋转angularVelocity,和随机insideUnitSphere让行星旋转. 2.创建空为Asteroid,拖入行星,父类逻辑控制,子类 ...
- cocos2dx打飞机项目笔记三:HeroLayer类和坐标系
HeroLayer类主要是处理hero的一些相关东西,以及调用bulletLayer的一些方法,因为子弹是附属于hero的~~ HeroLayer 类的成员如下: 1 class HeroLayer ...
- 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...
- UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)
UFLDL教程笔记及练习答案三(Softmax回归与自我学习***) 1:softmax回归 当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的 ...
- Java入门教程笔记(三)
Java入门教程笔记(一) Java入门教程笔记(二) 对前两份笔记的补充: static关键词: 被static关键词修饰的变量或者方法可以不依赖于某个特定的对象存在 被static关键词修饰的方法 ...
- 《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 12 Large-Scale Machine Learning
来源:<斯坦福数据挖掘教程·第三版>对应的公开英文书和PPT Chapter 12 Large-Scale Machine Learning Algorithms called " ...
最新文章
- 图灵七月书讯【Cassandra权威指南将在7月末上市】
- web自动化原理揭秘
- Shiro 单点登录
- numpy提供的快速的元素级数组函数
- angularjs基础知识1
- 新品Demo —— ZStack Mini 超融合一体机
- 单内核,微内核,混合内核OS结构比较
- mysql毕业生信息管理系统_Ssh2+Mysql实现的毕业生去向登记就业信息管理系统
- 如何在Linux中安装/挂载CD-ROM
- [清橙A1364]社交网络结构洞【暴力】
- steam无法连接至计算机,无法连接至steam网络怎么办 无法连接至steam网络解决方法【图文】...
- python修改像素
- python打开其他应用程序错误_Python应用程序错误(Udacity)
- 2010年6月3日晚18点23分
- SQL Server AlwaysOn可用性及故障转移
- CSSCI来源期刊(2010-2011年)
- mrtg流量图不更新了是怎么回事,谁有mrtg的安装及配置文档啊,求!!!
- 软件生存周期的图示——DO-178B/ED-12B学习笔记之九
- SSH Error: Permission denied (publickey)
- #WebStorm激活码失效解决方法!