子弹
来源:互联网 发布:紫砂壶品牌 知乎 编辑:程序博客网 时间:2024/04/29 07:35
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 子弹类
/// </summary>
public class Bullet : MonoBehaviour
{
//子弹是否已经出堂
bool isMove = false;
//子弹碰到僵尸后,僵尸失去的血量
int enemyLoseHp = 2;
//子弹deleixign
public BulletType type;//A,B
//刚体
Rigidbody r = null;
//子弹飞出去的时间
float time = 0;
// Use this for initialization
void Start ()
{
//添加刚体
r= GetComponent<Rigidbody>();
//如果没有刚体,就添加刚体
if (r == null) r = transform.gameObject.AddComponent<Rigidbody>();
//子弹不可见
this.transform.gameObject.SetActive(false);
//失去重力//如果该属性设置为true表示该物体运动状态不受外力,
//碰撞和关节的影响,而只受到动画以及附加在物体上的脚本影响,
//但是该物体仍然能改变其他物体运动状态,例如游戏中倒下的敌人始终不动 ,就是利用这个属性 。
r.isKinematic =true;
}
/// <summary>
/// 子弹飞出去
/// </summary>
public void Move(Vector3 pos,Quaternion rotation)
{
//子弹出堂,子弹可以看见
this.transform.gameObject.SetActive(true);
//设置子弹的位置
this.transform.position = pos;
//运动状态受外界的影响
r.isKinematic = false;
//找到枪
GameObject cam = GameObject.Find("Gun04");
//为子弹施加一个力
r.AddForce(cam.transform.forward * 1000f);
//子弹是否已经出膛
isMove = true;
}
/// <summary>
/// 碰撞
/// </summary>
/// <param name="con"></param>
void OnCollisionEnter(Collision con)
{
//如果碰到的对象是僵尸,僵尸要减血
if (con.collider.tag == "Respawn")
{
Zombie zom = con.collider.GetComponent<Zombie>();
zom.setHP(enemyLoseHp);
//销毁子弹
BulletDestroy();
}
}
/// <summary>
/// 如果子弹飞出去3秒以后,就自动销毁该子弹
/// </summary>
void Update()
{
if (isMove)
{
time += Time.deltaTime;
if (time >= 3f)
{
//销毁子弹
BulletDestroy();
}
}
}
/// <summary>
/// 销毁子弹
/// </summary>
public void BulletDestroy()
{
//出膛的时间
time = 0;
//没有出膛
isMove = false;
//没有重力的影响
r.isKinematic = true;
//子弹看不看见
this.gameObject.SetActive(false);
//设置子弹的大小
this.transform.position = Vector3.zero;
//开始回收到枪的子弹夹中去
ARGun.Instance.reBackBullet(this);
}
}
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 子弹类
/// </summary>
public class Bullet : MonoBehaviour
{
//子弹是否已经出堂
bool isMove = false;
//子弹碰到僵尸后,僵尸失去的血量
int enemyLoseHp = 2;
//子弹deleixign
public BulletType type;//A,B
//刚体
Rigidbody r = null;
//子弹飞出去的时间
float time = 0;
// Use this for initialization
void Start ()
{
//添加刚体
r= GetComponent<Rigidbody>();
//如果没有刚体,就添加刚体
if (r == null) r = transform.gameObject.AddComponent<Rigidbody>();
//子弹不可见
this.transform.gameObject.SetActive(false);
//失去重力//如果该属性设置为true表示该物体运动状态不受外力,
//碰撞和关节的影响,而只受到动画以及附加在物体上的脚本影响,
//但是该物体仍然能改变其他物体运动状态,例如游戏中倒下的敌人始终不动 ,就是利用这个属性 。
r.isKinematic =true;
}
/// <summary>
/// 子弹飞出去
/// </summary>
public void Move(Vector3 pos,Quaternion rotation)
{
//子弹出堂,子弹可以看见
this.transform.gameObject.SetActive(true);
//设置子弹的位置
this.transform.position = pos;
//运动状态受外界的影响
r.isKinematic = false;
//找到枪
GameObject cam = GameObject.Find("Gun04");
//为子弹施加一个力
r.AddForce(cam.transform.forward * 1000f);
//子弹是否已经出膛
isMove = true;
}
/// <summary>
/// 碰撞
/// </summary>
/// <param name="con"></param>
void OnCollisionEnter(Collision con)
{
//如果碰到的对象是僵尸,僵尸要减血
if (con.collider.tag == "Respawn")
{
Zombie zom = con.collider.GetComponent<Zombie>();
zom.setHP(enemyLoseHp);
//销毁子弹
BulletDestroy();
}
}
/// <summary>
/// 如果子弹飞出去3秒以后,就自动销毁该子弹
/// </summary>
void Update()
{
if (isMove)
{
time += Time.deltaTime;
if (time >= 3f)
{
//销毁子弹
BulletDestroy();
}
}
}
/// <summary>
/// 销毁子弹
/// </summary>
public void BulletDestroy()
{
//出膛的时间
time = 0;
//没有出膛
isMove = false;
//没有重力的影响
r.isKinematic = true;
//子弹看不看见
this.gameObject.SetActive(false);
//设置子弹的大小
this.transform.position = Vector3.zero;
//开始回收到枪的子弹夹中去
ARGun.Instance.reBackBullet(this);
}
}
阅读全文
0 0
- 子弹
- 子弹小游戏^^
- 子弹问题
- 子弹飞
- 子弹工厂
- 枪及子弹(转)
- 战士分发子弹例题
- 让子弹飞
- 让子弹飞台词
- 让子弹飞,是什么意思?
- 让子弹飞,是什么意思?
- 坦克打子弹
- 消失的子弹
- 子弹跟踪算法
- cocos2d-x发射子弹
- 士兵分子弹
- 躲过子弹风水技巧
- 蛋白质子弹回顾
- VS Nuget安装 "System.AggregateException”异常问题解决
- 用java代码编写金字塔
- MYSQL的分表备份案例及方案
- Java其他流
- Android沉浸式状态栏的实现在4.4及以上的系统中
- 子弹
- 高中数学?
- 我对Android 加载器的理解
- Android 开源框架Universal-Image-Loader解析--- 基本介绍及使用
- 使用ssm框架在web.xml中的基本配置信息
- Java 多线程同步和异步详解
- ofbiz——关于过滤器ControlFilter的配置
- SQL SERVER2008数据库学习—sys.objects系统表简述
- 引用