Unity3d 5.x 学习笔记(3)—— 发射预制体子弹(Instantiate),点射,扫射,五连发效果
来源:互联网 发布:java架构师薪资 编辑:程序博客网 时间:2024/06/04 18:31
代码实例1(点射发射一颗预制体子弹)
using UnityEngine; using System.Collections; public class Shoot : MonoBehaviour { //申请GameObject变量用来承载预制体(拖动预制体赋值) public GameObject bullet; //申请float变量设置推动力大小 public float thrust = 2000.0f; //检测开火函数 void CheckShoot() { //是否输入了“Fire1”(默认鼠标左键和左Ctrl键) if (Input.GetButtonDown("Fire1")) { //实例化一个bullet的克隆体。 GameObject clone = Instantiate(bullet, transform.position, transform.rotation) as GameObject; //获取克隆体的刚体组件。 Rigidbody rb = clone.GetComponent<Rigidbody>(); //给克隆体的刚体组件一个推动力。 rb.AddForce(clone.transform.forward * thrust); } } void Update () { CheckShoot(); } }
代码实例2(扫射发射一颗预制体子弹)
using UnityEngine; using System.Collections; public class ShootSimple : MonoBehaviour { //申请GameObject变量用来承载预制体(拖动预制体赋值) public GameObject bullet; //申请float变量设置推动力大小 public float thrust = 2000.0f; //变量设置开火速率。 public float fireRate = 0.5f; //开火时间,初始化为零。 public float fireTime = 0.0f; //检测开火函数 void CheckShoot() { //是否输入了“Fire1”(默认鼠标左键和左Ctrl键) 并且 当前时间超过了开火时间 if (Input.GetButton("Fire1") && Time.time > fireTime) { //根据开火速率调整开火时间 fireTime += fireRate; //实例化一个bullet的克隆体。 GameObject clone = Instantiate(bullet, transform.position, transform.rotation) as GameObject; //获取克隆体的刚体组件。 Rigidbody rb = clone.GetComponent<Rigidbody>(); //给克隆体的刚体组件一个推动力。 rb.AddForce(clone.transform.forward * thrust); } } void Update () { CheckShoot(); } }
代码实例3(发射五连发效果预制体子弹)
using UnityEngine; using System.Collections; public class ShootSimple : MonoBehaviour { //申请GameObject变量用来承载预制体(拖动预制体赋值) public GameObject bullet; //申请float变量设置推动力大小 public float thrust = 2000.0f; //变量设置每轮之间开火间隔 public float fireRate = 1.5f; //开火时间,初始化为零。 public float fireTime = 0.0f; //设置一轮中子弹发射速率 public float fireWait = 0.02f; //设置每轮子弹数量 public int bulletCount = 5; //检测开火函数 因为函数内用了多线程,所以需要返回一个 IEnumerator 类型的值,而不是 void 。 IEnumerator CheckShoot() { //是否输入了“Fire1”(默认鼠标左键和左Ctrl键) 并且 当前时间超过了开火时间 if (Input.GetButton("Fire1") && Time.time > fireTime) { //根据开火速率调整开火时间 fireTime += fireRate; //循环,发射一轮的所有子弹 for (int i = 0; i < bulletCount; i++) { //实例化一个bullet的克隆体。 GameObject clone = Instantiate(bullet, transform.position, transform.rotation) as GameObject; //获取克隆体的刚体组件。 Rigidbody rb = clone.GetComponent<Rigidbody>(); //给克隆体的刚体组件一个推动力。 rb.AddForce(clone.transform.forward * thrust); //等待 fireWait 秒后发射第二课子弹 yield return new WaitForSeconds(fireWait); } } } void Update () { //开启协同程序 StartCoroutine(CheckShoot()); } }
0 0
- Unity3d 5.x 学习笔记(3)—— 发射预制体子弹(Instantiate),点射,扫射,五连发效果
- Unity3D学习笔记(十二)预制
- Unity3D学习笔记(十二)预制
- cocos2d-x SimpleGame(3)如何发射子弹
- unity3d添加子弹爆炸预制体动画
- Unity3D学习之飞机发射子弹。
- cocos2d-x发射子弹
- 【Java_项目篇<1>】--JAVA实现坦克大战游戏--子弹连发+爆炸效果(四)
- 【Unity】关于发射子弹、导弹追踪的逻辑(笔记)
- 学习笔记 1:自己制作的子弹预制体 注意点
- Unity3D学习记录——子弹
- cocos2d-x如何发射子弹
- Cocos2d-x--发射多发子弹
- (6) cocos2d-x发射子弹
- 第四章——如何发射子弹
- Demon_Tank (坦克移动发射子弹)
- 上周的学习内容五连发(周一)
- Cocos2d-x《雷电大战》(3)-子弹无限发射
- 显示出每月有几周和每周一开始到周末的日期
- maven项目报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Android之AudioManager(音频管理器)详解
- python 写的sqli_lab显错式注入小代码
- Problem B
- Unity3d 5.x 学习笔记(3)—— 发射预制体子弹(Instantiate),点射,扫射,五连发效果
- Python--文件
- 关于更新app时出现解析包错误
- MySql 为表中已有字段设置默认值
- Spring源码深度解析(三)Spring的结构组成
- 安卓开发:活动的最佳实践3--启动活动的最佳写法
- C++
- ButterKnife的使用问题
- BOOT流程