子弹朝向屏幕准星发射

## 子弹如何朝向屏幕准星发射 ##

       我在做一款FPS射击类游戏时,需要子弹的发射方向朝向准星的方向,在网上找了好久没有发现有价值的内容,都是寥寥几句。

       在这里介绍一下我的实现方法。


      首先:子弹要作为枪的子节点,枪作为摄像机的子节点,摄像机作为人物的子节点,这样在人物旋转的时候子弹发射的前方永远和人物的前方保持一致。


      其次:制作设计准星,在网上找一个准星texture,导入Unity中,创建一个ImageUI空间,选择Sprite为准星的贴图,在调节这个UI控件的位置,处于屏幕的正中心就好。

       子弹朝向屏幕准星发射_第1张图片

       


           最后就是代码的编写了直接上图: 

using UnityEngine;
using System.Collections;
public class Shoots : MonoBehaviour 
{
	void Update()
	{
			Shoot();
	}
/// 
/// 发射子弹
/// 
private void Shoot()
{
	if (Input.GetKey(KeyCode.Mouse0))//按下鼠标左键
	{
		timer += Time.deltaTime;//计时器计时
		if (timer > 1f / rate)//如果计时大于子弹的发射速率(rate每秒几颗子弹)
		{
			//通过摄像机在屏幕中心点位置发射一条射线
			Ray ray = m_Camera.ScreenPointToRay(new Vector3(Screen.width/2, Screen.height / 2, 0));
			if (Physics.Raycast(ray, out hitInfo))//如果射线碰撞到物体
				{
					targetPoint = hitInfo.point;//记录碰撞的目标点
				}
			else//射线没有碰撞到目标点
				{
					//将目标点设置在摄像机自身前方1000米处
					targetPoint = m_Camera.transform.forward * 1000;
				}
			//在枪口的位置实例化一颗子弹,按子弹发射点出的旋转,进行旋转
			bullet = Instantiate(bulletPrefab, bulletPoint.position, bulletPoint.rotation) as GameObject;
			bullet.transform.LookAt(targetPoint);//子弹的Z轴朝向目标
			Destroy(bullet, 10);//在10S后销毁子弹
			timer = 0;//时间清零
		}
	}
}
}

   子弹朝向屏幕准星发射_第2张图片


最后效果图:

         


博主链接:http://my.csdn.net/baidu_39447417 

你可能感兴趣的:(#Unity,杂类)