Demo_CS(移动,切换枪支,发射子弹)





using UnityEngine;
using System.Collections; public class Gun : MonoBehaviour { private Animator ani;
//开火声音
public AudioClip fireClip;
//装换子弹声音
public AudioClip reloadClip;
//准备声音
public AudioClip readyClip;
//火花特效
public GameObject muzzleFlash;
//子弹预设体
public GameObject bullet; private Transform firePoint; void Awake()
{
ani = GetComponent<Animator> ();
firePoint = transform.Find ("FirePoint");
} public void Fire()
{
//如果当前动画状态为Normal
if (ani.GetCurrentAnimatorStateInfo ().IsName ("Normal")) {
//播放Fire动画
ani.SetTrigger ("Fire");
//播放Fire声音在当前位置
AudioSource.PlayClipAtPoint(fireClip,transform.position);
//显示火花特效
muzzleFlash.SetActive (true);
}
} public void Reload()
{
//如果当前动画状态为Normal
if (ani.GetCurrentAnimatorStateInfo ().IsName ("Normal")) {
//播放动画
ani.SetTrigger("Reload");
//播放声音
AudioSource.PlayClipAtPoint(reloadClip,transform.position);
}
} /// <summary>
/// 生成子弹(帧事件)
/// </summary>
public void InitBullet()
{
//生成子弹
GameObject currentblt =
Instantiate (bullet,
firePoint.position,
firePoint.rotation) as GameObject;
//给子弹添加速度
currentblt.GetComponent<Rigidbody> ().velocity
= firePoint.forward * ;
}
}
using UnityEngine;
using System.Collections; public class GunManager : MonoBehaviour { //当前枪支序号
private int currentGunIndex = ;
//当前枪支脚本
private Gun currentGun; void Start()
{
//找到默认枪支
currentGun = transform.GetChild (currentGunIndex).
GetComponent<Gun> ();
} void Update()
{
if (Input.GetMouseButtonDown ()) {
//开火
currentGun.Fire ();
}
if (Input.GetKeyDown (KeyCode.R)) {
//换子弹
currentGun.Reload ();
}
if (Input.GetKeyDown (KeyCode.Q)) {
//换枪
GunSwitch();
}
} /// <summary>
/// 换枪
/// </summary>
void GunSwitch()
{
//隐藏当前使用的枪支
transform.GetChild (currentGunIndex).
gameObject.SetActive (false);
//换下一把枪
currentGunIndex++;
//防止子对象序号越界
//当序号等于枪支个数,取余后序号归零
currentGunIndex =currentGunIndex % transform.childCount;
//显示新的枪支
transform.GetChild (currentGunIndex).
gameObject.SetActive (true);
//更新枪支
Start ();
}
}
using UnityEngine;
using System.Collections; public class MuzzleFlash : MonoBehaviour { //火花显示时间
public float interval = 0.1f; /// <summary>
/// 被激活的时候
/// </summary>
void OnEnable()
{
//interval时间过后,执行Hide
Invoke ("Hide", interval);
} /// <summary>
/// 隐藏当前游戏对象
/// </summary>
void Hide()
{
gameObject.SetActive (false);
}
}
Demo_CS(移动,切换枪支,发射子弹)的更多相关文章
- pygame 笔记-4 代码封装&发射子弹
继续之前的内容,随着游戏的内容越来越复杂,有必要把代码优化一下,可以参考OOP的做法,把人物类抽象出来,弄成一个单独的类,这们便于代码维护,同时我们给小人儿,加个发射子弹的功能,代码如下:(看上去略长 ...
- Demo_敌军坦克生成,坦克移动(可以拓展发射子弹,敌军消失获取分数或者添加动画,声音功能)
using UnityEngine; using System.Collections; public class Tank : MonoBehaviour { //坦克面积结构体对象 public ...
- Demon_Tank (坦克移动发射子弹)
using UnityEngine; using System.Collections; public class Tank : MonoBehaviour { //子弹预设体 public Game ...
- [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第4讲(创建敌方飞机、敌方飞机发射子弹、玩家子弹击中敌方小飞机,小飞机死亡)
一.创建敌方飞机 1.思考创建思路: 创建敌方飞机思路与创建玩家飞机思路一样: (1)思考敌方飞机具备什么属性: 敌方飞机的图片.坐标.飞行速度.状态(是否被击中) 设置小飞机被击中时消失时间.飞机可 ...
- [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第3讲(玩家发射子弹)
一.公布上一讲中玩家飞机上.下.右移动实现的代码: /*=========================键盘按下事件 keycode为得到键盘相应键对应的数字==================== ...
- Egret学习笔记 (Egret打飞机-8.敌机和主角飞机发射子弹)
经过前面几章的准备,我们差不多已经具备了一个基本的框架,这一章我们就开始添砖加瓦了. 敌机定时发射一个子弹,子弹的方向是从上到下,但是发射子弹的代码应该放在哪儿呢? 从面向对象编程的思想来说,子弹是敌 ...
- unity零基础开始学习做游戏(四)biu~biu~biu发射子弹打飞机
-------小基原创,转载请给我一个面子 主角都能移动了,那不得做点什么伸张正义,守护世界和平的事嘛,拿起家伙biu~biu~biu~ 首先得做一个好人和一个坏人 老规矩,Canvas下创建两个Im ...
- 用JS制作《飞机大作战》游戏_第4讲(创建敌方飞机、敌方飞机发射子弹、玩家子弹击中敌方小飞机,小飞机死亡)-陈远波
一.创建敌方飞机 1.思考创建思路: 创建敌方飞机思路与创建玩家飞机思路一样: (1)思考敌方飞机具备什么属性: 敌方飞机的图片.坐标.飞行速度.状态(是否被击中) 设置小飞机被击中时消失时间.飞机可 ...
- 用JS制作《飞机大作战》游戏_第3讲(玩家发射子弹)-陈远波
一.公布上一讲中玩家飞机上.下.右移动实现的代码: /*=========================键盘按下事件 keycode为得到键盘相应键对应的数字==================== ...
- Java使用线程并发库模拟弹夹装弹以及发射子弹的过程
同样是从网上看到的一个需求,需求描述都在代码中. 不多说了,直接贴代码了.相信大家都能够看得懂的! package cn.yw.bore; import java.util.ArrayList; im ...
随机推荐
- Zend Server安装后首次运行就出现Internal Server Error的解决(转)
新近学习php,结果装了Zend Server上来就报错,网上找到了解决方法,照着做果然可行,转之. 刚才安装了Zend Server,安装后首次运行就爆出了一个Internal Server Err ...
- mysql 语句资料总结
一.UNION命令 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SE ...
- AspNet WebApi : MessageHandler(消息处理器 )
1. Http Message Handler WebApi中的MessageHandler类似MVC中的filter,可用于请求/响应到达真正目标前对请求或者响应进行修改,比如:用户身份验证,请求头 ...
- MySQL中删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT ...
- PHP第一课笔记
打算以后学习PHP,花3个月时间学会它,自己为自己加油.每天坚持学习,第一天感觉良好,没开始写,所以不敢觉难,在难也学,加油,me!! PHP笔记记录(2014.7.27) ★web开发的介绍 1.动 ...
- int*-------int
a=(int)((int*)0 + 4)求a是多少 大家看图应该明白了 十六进制0x00000010转换为十进制就是16
- 谈谈android 布局 的优化
来自:http://www.cnblogs.com/youxilua/archive/2012/05/08/2489414.html 导言 设配android的屏幕一定是一个噩梦,就好比那些搞网页设计 ...
- Inter系列处理器名称浅析
东拼西凑之作,仅仅整理而已,望周知 ------------------------------------------------------------------ 举例 CPU酷睿i5-3230 ...
- PHPCMS收集标签使用
调用子栏目(在栏目首页模板需要用到) {pc:content action="category" catid="$catid" num="25&quo ...
- Python 的“+”和append在添加字符串时候的区别
对于一个空的Python列表,往后添加内容有很多种,其中两种一个是用“+”直接添加内容,另外一种是Listname.append(x)来添加内容 其中,如果处理字符串 在使用“+”的时候,会将字符串拆 ...