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 ...
随机推荐
- SGU 111.Very simple problem
题目大意: 求平方不大于n(n<=10^1000)的最大的数. 分析: 二分+高精度乘法 或者 高精度开方... ...
- GRUB配置
参数讲解: default :定义缺省启动的系统 如果安装多系统的话 会有多个title 信息 可以通过设置 default: 来改变启动那个系统 默认第一个为0 第二个为1 依次类推 timeout ...
- Js随机数--网页版的体育彩票选号器
<script> function Quickpick() { var ball for( ball = 0; ball < 5; ball++) { this[ball] = pa ...
- 百度的一个Ajax跨域方法 JavaScript是没有域的限制
baidu的通行证处理都是在二级域名passport.baidu.com中处理的,但是baidu很多地方登录都好像是用ajax处理的,他是怎么做的呢?研究了一下,发现一个小技巧. 在http://zh ...
- 最新发布C#.NET快速开发框架企业版V4.0 (适合开发ERP、进销存系统)
C/S系统开发框架-企业版 V4.0 (Enterprise Edition) http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度网盘: ...
- STM32学习笔记——SPI串行通讯(向原子哥学习)
一.SPI 简介 SPI是 Serial Peripheral interface 的缩写,就是串行外围设备接口.SPI 接口主要应用在 EEPROM, FLASH,实时时钟,AD 转换器,还有数 ...
- 【Java】理解 UDDI
跟上规范的不断发展 统一描述.发现和集成(Universal Description, Discovery, and Integration,UDDI)项目继续丰富企业用于在 UDDI 业务注册中心表 ...
- BS_OWNERDRAW风格的作用和例子,值得研究~
TBitBtn就是一个例子: procedure TBitBtn.CreateParams(var Params: TCreateParams); begin inherited CreatePara ...
- Android Wear开发 - 卡片通知 - 第二节 : 自定义Wear卡片样式
一.前言说明 在上一节添加Android Wear通知特性我们实现了简单的Android Wear卡片拓展,但是默认提供给我们的多张卡片只能实现简单的文字展示,如果想要自定义布局,添加图片等等,则需要 ...
- oralce 仅配置精简客户端 连接plsql ( 版本需一直,要不都是32要不是都是64)
1.Oracle服务器已经安装完成,版本10.2.0. 2.访问www.oracle.com,下载Oracle精简客户端. 下载页面地址:http://www.oracle.com/technetwo ...