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 ...
随机推荐
- ubuntu系统安装的MySql数据库,远程不能访问的几种可能问题
安装MySQL数据库后一般会遇到远程计算机不能连接的问题,具体问题需要我们排查.可能一:MySql数据库是否提供了外部访问的用户以及权限?可能二:MySql的配置文件是否只绑定了本机ip(ubuntu ...
- 关于DM的一点总结[ZZ]
用IBM的IM做过一段时间的电信客户挖掘由于时间不是很长,做的挖掘模型效果还有待提高应朋友要求简单总结几点(水平有限,也希望经验丰富的朋友给些建议): 1.挖掘工具主要分商业数据产品和集成数据挖掘产品 ...
- WPF DataBinding之我见
原创,转载请注明出处:WPF DataBinding之我见 一.DataBinding介绍 数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定具有正确设置并且数据提供正确通知,则 ...
- Linq查询IEnumerable与IQueryable
class Program { static void Main(string[] args) { System.Diagnostics.Stopwatch stp = new Stopwatch() ...
- ZOJ3870 Team Formation
/** Author: Oliver ProblemId: ZOJ3870 Team Formation */ /* 思路 1.异或运算,使用^会爆,想到二进制: 2.我们可以试着从前往后模拟一位一位 ...
- eclipse4.2 UI换回 3.6版本的UI
Apparently, the Eclipse developers were kind enough to leave us an easy way out: From the Window men ...
- Linux on ASUS N550JK4700
实际上,ASUS N550JK对Ubuntu 14.04的兼容性是相当好的,包括无线网卡.蓝牙.键盘背光的调节.触摸板的开关.音量的键盘调节都是安装后无需配置直接可以使用的,这是出乎意料的,因为这些功 ...
- JS 获取各个宽度和高度
IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...
- openerp 中如何方便对搜索时间段
以前为了方便的搜索时间区间,经常用wizard对方式,设置开始 结束时间,需要做大量对代码工作, 今天看了search view对组成, 可以用2个filter_domain 来做, 这样用户需要输 ...
- GNU 网络程序
______________________________________________________________________________ | 版权声明 | | 1.本文可以转载.修 ...