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 ...
随机推荐
- 初试ubuntu14.4问题集锦2
好的,我开始继续鼓捣. 想了这么长时间,我想到的是,肯定是compiz设置了unity的什么东西才导致这种问题,绝非什么显卡驱动的事情. 于是二话不说,开机登录,进入tty1,然后apt-get re ...
- [LeetCode OJ] Gas Station
问题描述: There are N gas stations along a circular route, where the amount of gas at station i is gas[i ...
- SGU 124.Broken line
时间限制:0.25s 空间限制:4M 题意: 给出n条线段和一个点,保证所有线段平行X轴或Y,并且闭合成一个多边形.判断这个点的位置是在多边形上,还是多边形内,还是多边形外. solution: 由于 ...
- <input>标签
一. 上传图片: type="file":上传文件 accept:选择上传的种类,图片或者是视频(/png只能上传png格式的图片) multiple="multip ...
- JS动画理论
动画(Animation) 动画意味着随着时间而变化,尤其指视觉上的变化,包括位置.形态等的变化.运动基本上表现为物体随时间,发生位置上的变化:形态基本表现为大小.颜色.透明度.形状等随时间的变化. ...
- J2EE开源项目
这篇文章写在我研究J2SE.J2EE近三年后.前3年我研究了J2SE的Swing.Applet.Net.RMI.Collections.IO.JNI……研究了J2EE的JDBC.Sevlet.JSP. ...
- ZT: WEB学习资料
根据个人经验整理一些Web开发的一些技术书籍,希望对需要进入Web开发领域的TX有所指导,由于是在家里整理的,所有每本书对应的豆瓣链接打不开,如果整理有缺陷请多多指出. 入门篇:通过相关技术的全面基础 ...
- cf B Inna and Candy Boxes
题意:输入n,然后输入n个数ai,再输入n个数bi,如果在1-ai中能找到两个数x,y,x和y可以相等,如果x+y=bi,答案加上x*y,否则减去1,让结果尽可能大,输出结果. #include &l ...
- 使用 HT 单片机芯片做触摸按键的试验:触摸按键实践一
使用 HT 芯片做触摸按键,可供使用的专门用途芯片主要有:HT45R35,HT45R36,HT45R38,原来还有一个 45R34 ,不知道为何停止生产了.如果仅仅是为了按键功能,选择 45R35 觉 ...
- sudo and su
sudo bash : change the current user into root su u1: change the current user into u1 useradd: add ne ...