问题:子弹在快速的移动下,很可能在一帧以后,穿过物体,而不会触发目标身上的触发器,这样,子弹就打不中物体
解决办法:1,用射线检测物体
2,朝目标点移动,
public LayerMask layer;
RaycastHit hit;
private Vector3 targetPos;
Start(){
if(Physics.Raycast(transform.position,transform.forward,out hit,500,layer)){
targetPos = hit.position;//存储目标物体的位置
}
}
Update(){
transform.position = Vector3.MoveTowards(transform.position,targetPos,Time.deltaTime*speed);//用movetowards
if((transform.position - targetPos).sqrMagnitude < 0.1){ 去移动子弹
Destroy();
}
}
这样,在开枪的那一瞬间,就知道会不会打中物体,而且子弹是移动到目标的坐标而不是向前走。