您的位置:首页 > 移动开发 > Unity3D

[Unity3D]手机3D游戏开发:FPS射击游戏中瞄准镜CrossHair的制作

2013-01-24 18:04 756 查看
学习Unity脚本推荐:Unity3D官网索引

首先创建脚本文件用来初始化瞄准镜,脚本CrossHairGUI源码如下:

var crosshair = SwitchGUI();
var location = Location();
var noGuiStyle : GUIStyle;
private var GUIColor = Color.white;

function Start()
{
useGUILayout = false;
NotificationCenter.DefaultCenter().AddObserver(this, "SwapWeapon");
}
function SwapWeapon() {
crosshair.nextTexture();
}

function Update() {
location.updateLocation();
}

function OnGUI()
{
GUI.color = GUIColor;
GUI.Box(Rect(location.offset.x+crosshair.offset.x,
location.offset.y+crosshair.offset.y,
crosshair.texture.width,
crosshair.texture.height),
crosshair.texture,noGuiStyle); // crosshair
}


然后把这个脚本拖拽到MainCamera上面,接下来就是部署贴图了:



然后指定两个瞄准镜的贴图:



但是运行之后便会发现问题所在,瞄准镜和真正的准星不在一起:



我们可以在脚本中继续调整准星的位置:



但是这样还是有问题,比如调整视角的时候,中心的瞄准镜却不会随之改变,在开枪的脚本中还需要稍作修改。

首先获取到相机的Transform:



同时还需要将射线的发射点和方向改成Camera的相关参数:



Layermask是蒙板,比如下面这段代码:

var layermask:LayerMask;
layermask = 1<<12;
Physics.Linecast(start, end,hit, layermask));


就是忽略掉1~12层的物体。

所以再添加LayerMask,告诉Unity哪些可以打中哪些不可以:



当然在脚本的前面需要有所申明:



这个时候就会发现瞄准镜基本可以使用了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐