纳金网
标题:
unity3d一个简单的对打游戏
[打印本页]
作者:
star-小虎
时间:
2013-10-23 15:50
标题:
unity3d一个简单的对打游戏
我发现没有动画想做什么都不行噢~~~,这个动画还是一个大侠给我的,网上找了很多bip动作文件,但是转成FBX格式不行,好像是版本不一样的缘故。后来为了做进度条我之前学了一下EZGUI,但是没有得到想要的效果,高手说是因为没有SM2的缘故,后来我又学习iGUI,的确简单又多用,不错哦~~~至于NGUI我还没用过,以后看看再说~~~呵呵呵,如果要说他们的区别的话,EZGUI是3D的,但是控件较少;iGUI简单易用,控件多,是2D的和unity本身的GUI相似,NGUI没用过还不知道噢~~~~。还有就是我一运行unity就卡死,害我做了半天的东西都没保存噢,大家一定要多保存哈~~~找了半天原因,后来发现原来是我在update函数里面写了一个while循环,把while改成if就好了(千万别在update里面用while,一不小心就卡死咯,要用的话在start里面可以的)。
下面看看今天的demo吧,如果不懂动画的兄弟,可以先去前面看看我写的一个动画的博文,应该是看得懂的啦。我把这个demo的工程放到资源里面去了,里面有动画的,大家可以去下来看看哈~~~~~
注意
:
这里面没有用碰撞检测,因为如果要发生碰撞的话,刀可能会飞的,而且也砍不下去啊,所以只能用触发器了。
下面简单来说说触发器的用法吧,和碰撞一样,必须至少有一个物体有rigidbody,而且两个物体必须都有含有触发器的的collider,我们这用boxcollider(meshcollider不能触发),而且在collider中的Is Trigger要勾上哦~~~~
我们的游戏对象控制代码player.js:
[java]
view plaincopyprint?
//游戏角色的移动控制
var playerprogressbar:iGUI.iGUIProgressBar;
var play1:
boolean
=
true
;
var isdie:
boolean
=
false
;
function Update(){
if
(!isdie){
if
(Input.GetKey(KeyCode.UpArrow)){
animation.Play("walk");
transform.Translate(Vector3.forward*1*Time.deltaTime);
}
if
(Input.GetKey(KeyCode.DownArrow)){
transform.Rotate(Vector3.up*180);
}
if
(Input.GetKey(KeyCode.RightArrow)){
transform.Rotate(Vector3.up*10);
}
if
(Input.GetKey(KeyCode.LeftArrow)){
transform.Rotate(Vector3.up*-10);
}
if
(Input.GetKey(KeyCode.Space)){
animation.Play("attack");
}
if
(!animation.isPlaying){
animation.Play("Take 001");
}
}
}
//游戏对象的血条控制
function OnTriggerEnter(obj:Collider){
if
(obj.gameObject.name!="playerarrow"){
if
(playerprogressbar.value!=0){
playerprogressbar.value-=10;
print(obj.gameObject.name);
}
else
{
animation.Play("die");
isdie=
true
;
}
}
}
敌人的游戏对象控制代码 enemy.js:
[java]
view plaincopyprint?
var player:Transform;
var flag:
boolean
=
true
;
var enemyprogressbar:iGUI.iGUIProgressBar;
function Update () {
if
(flag){
animation.Play("walk");
transform.LookAt(player);
transform.Translate(Vector3.forward*0.5*Time.deltaTime);
}
if
(Vector3.Distance(player.position,transform.position)<3){
flag=
false
;
animation.Play("attack");
}
else
{
flag=
true
;
}
}
function OnTriggerEnter(obj:Collider){
if
(obj.gameObject.name!="enemyarrow"){
if
(enemyprogressbar.value!=0){
enemyprogressbar.value-=10;
print(obj.gameObject.name);
}
else
{
animation.Play("die");
}
}
}
作者:
libufan
时间:
2013-10-23 18:14
这一天发布的帖子量有点多了吧
作者:
wusky751023
时间:
2013-10-24 23:36
厲害!!!!
這Code分享
用心阿大哥!!!!
立馬試試看
提到GUI
iGUI貌似很好上手
那麼NGUI我也擺一邊不動她
感謝!!!
作者:
huhumark
时间:
2013-10-26 21:50
希望楼主发出源代码及模型
作者:
梦魇
时间:
2013-11-19 14:45
嘿嘿 可以下载项目看就好了
作者:
cgjch8
时间:
2013-11-19 17:26
相当不错的教程
作者:
qweqwe1245
时间:
2013-11-21 15:34
不错不错dadawdada
作者:
facebookupdate
时间:
2013-11-29 01:46
haaaaaaaaa
作者:
sunnyblackoooo
时间:
2013-11-29 02:52
真是好用的玩意儿 感恩楼主分享
作者:
蜗牛
时间:
2013-11-29 18:56
感谢分享这个资源
作者:
nianhua2008
时间:
2013-12-27 18:20
感觉很好,要是再分享源码那就更好了!
作者:
hariboot
时间:
2013-12-27 18:44
汗。。。。。。
作者:
89684598
时间:
2014-2-22 21:03
谢楼主分享
欢迎光临 纳金网 (http://rs.narkii.com/club/)
Powered by Discuz! X2.5