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

学习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哪些可以打中哪些不可以:


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


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


你可能感兴趣的:(Unity3D)