子弹朝向屏幕准星发射

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

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

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


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


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

       

       


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

using UnityEngine;
using System.Collections;
public class Shoots : MonoBehaviour 
{
	void Update()
	{
			Shoot();
	}
/// <summary>
/// 发射子弹
/// </summary>
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;//时间清零
		}
	}
}
}

   


最后效果图:

         


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值