学习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));
所以再添加LayerMask,告诉Unity哪些可以打中哪些不可以:
当然在脚本的前面需要有所申明:
这个时候就会发现瞄准镜基本可以使用了: