[Unity3D]手机3D游戏开发:FPS射击游戏中瞄准镜CrossHair的制作
2013-01-24 18:04
756 查看
学习Unity脚本推荐:Unity3D官网索引
首先创建脚本文件用来初始化瞄准镜,脚本CrossHairGUI源码如下:
然后把这个脚本拖拽到MainCamera上面,接下来就是部署贴图了:
然后指定两个瞄准镜的贴图:
但是运行之后便会发现问题所在,瞄准镜和真正的准星不在一起:
我们可以在脚本中继续调整准星的位置:
但是这样还是有问题,比如调整视角的时候,中心的瞄准镜却不会随之改变,在开枪的脚本中还需要稍作修改。
首先获取到相机的Transform:
同时还需要将射线的发射点和方向改成Camera的相关参数:
Layermask是蒙板,比如下面这段代码:
就是忽略掉1~12层的物体。
所以再添加LayerMask,告诉Unity哪些可以打中哪些不可以:
当然在脚本的前面需要有所申明:
这个时候就会发现瞄准镜基本可以使用了:
首先创建脚本文件用来初始化瞄准镜,脚本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]手机3D游戏开发:使用UnityRemote开发一个简单的FPS案例
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(四)----使用PlayerPrefs存储数据到本地
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(六)----实现文字闪烁效果
- [Unity3D]手机3D游戏开发:关于自定义Joystick的相关设置和脚本源码
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(三)----GUI Style与数组的使用
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(八)----用TouchScreenKeyboard弹出键盘
- [Unity3D]手机3D游戏开发:如何使用Unity3D中自带的重力感应
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(五)----使用TextField 输入并调整排名
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(七)----使用Game ID避免数据重复输入
- [Unity3D]手机3D游戏开发:场景切换与数据存储(PlayerPrefs 类的介绍与使用)
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(一)----初始化显示的高分榜
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(九)----使用PreviewLabs插件提速与完整的项目源码
- [Unity3D]手机3D游戏开发:简单的移动和缩放鼠标手势脚本源码
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(二)----使用GUI.Box显示文字
- 【Unity3d】手机游戏关卡制作
- 【IOS手机游戏开发】在 xcode 4 下为 iOS 制作 framework
- Unity3D游戏开发-模仿项目一 第一人称角色射击(有源代码)
- 【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)
- Unity3D射击游戏-游戏开发、UNITY3D游戏开发、UNITY3D软件开发
- Unity3D+免费工具开发2D游戏之二:制作关卡1的界面