using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bullet_shotgun : MonoBehaviour {
float moveSpeed = 50;
Vector3 pastPos, presentPos;//子弹上一帧所在位置,子弹本帧所在的位置
float dis;//当前位置和上一帧位置之间的距离
// Use this for initialization
void Start()
{
presentPos = transform.position;//当前位置等子弹的位置
}
void FixedUpdate()
{
transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed);//子弹以moveSpeed的速度沿自身z轴正方向移动
Destroy(gameObject, 0.5f);//0.5秒后销毁子弹
Cheakcollide();//调用子弹碰撞检测函数
}
/// <summary>
/// 检测子弹碰撞检测函数
/// </summary>
void Cheakcollide()
{
pastPos = presentPos;//上一帧的presentPos值赋值给pastPos
presentPos = transform.position;//子弹当前位置赋值给presentPos
dis = Vector3.Distance(presentPos, pastPos);//上一帧位置和当前位置之间的距离
RaycastHit info;//射线碰撞信息
bool hit = Physics.Raycast(pastPos, transform.forward, out info, dis);//检测是否射线碰撞,从上一帧位置朝向子弹方向发射一条射线,长度等于dis
if (hit)//如果射线发生碰撞
{
if (!info.transform.tag.Equals("Player"))
{
Destroy(gameObject);
if (info.transform.tag.Equals("Enemy"))
{
Destroy(info.transform.gameObject);
}
}
}
}
}
using System.Collections.Generic;
using UnityEngine;
public class bullet_shotgun : MonoBehaviour {
float moveSpeed = 50;
Vector3 pastPos, presentPos;//子弹上一帧所在位置,子弹本帧所在的位置
float dis;//当前位置和上一帧位置之间的距离
// Use this for initialization
void Start()
{
presentPos = transform.position;//当前位置等子弹的位置
}
void FixedUpdate()
{
transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed);//子弹以moveSpeed的速度沿自身z轴正方向移动
Destroy(gameObject, 0.5f);//0.5秒后销毁子弹
Cheakcollide();//调用子弹碰撞检测函数
}
/// <summary>
/// 检测子弹碰撞检测函数
/// </summary>
void Cheakcollide()
{
pastPos = presentPos;//上一帧的presentPos值赋值给pastPos
presentPos = transform.position;//子弹当前位置赋值给presentPos
dis = Vector3.Distance(presentPos, pastPos);//上一帧位置和当前位置之间的距离
RaycastHit info;//射线碰撞信息
bool hit = Physics.Raycast(pastPos, transform.forward, out info, dis);//检测是否射线碰撞,从上一帧位置朝向子弹方向发射一条射线,长度等于dis
if (hit)//如果射线发生碰撞
{
if (!info.transform.tag.Equals("Player"))
{
Destroy(gameObject);
if (info.transform.tag.Equals("Enemy"))
{
Destroy(info.transform.gameObject);
}
}
}
}
}