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);
}
}