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

unity坦克大战(一)

2013-09-04 21:57 183 查看
  前面简单的 介绍了unity的一些功能和方法,从现在开始,我们就以一个游戏实例(坦克大战)来讲解unity游戏开发,因为我之前也是看别的教程学习的所以所以可能和别人做法的一样,现在我是一边做一边写,在最后我会把源代码发到网上。

首先我们先简单的介绍一下我们这个坦克大战到最后的一个效果,主角(也就是你)利用键盘和鼠标来控制坦克的移动旋转以及发射炮弹,然后出现若干辆敌对的坦克,开始攻击你,你学要做的就是保护自己并攻击敌对的坦克。现在我们开始编写坦克大战游戏:    

        打开unity,创建一个地面,(这里为了简化游戏,我们在这里并不做游戏的地形),添加一个Cube改名为Mytank,选中Mytank在菜单栏中找到Component>Physics>Rigidbody,这样我们就给这个方块添加了一个物理属性,它受到重力、摩擦力等,然后我们在Project中创建一个C# script,重命名为Tank_move,打开输入代码:

public float Force=1000;

void Update () {

if (Input.GetKey(KeyCode.W))

{

rigidbody.AddForce(transform.forward*Force);

}

if (Input.GetKey(KeyCode.S))

{

rigidbody.AddForce(transform.forward*-Force);

}

if (Input.GetKey(KeyCode.A))

{

transform.Rotate(Vector3.up*-1);

}

if (Input.GetKey(KeyCode.D))

{

transform.Rotate(Vector3.up*1);

}

}将代码直接拖改Mytank

这样我们得到一个可以控制的方块。

然后就是找一个坦克模,我们可以在http://www.3dcool.net/这里找一些我们学要的模型,虽然对游戏开发来时模型不是很全,但是总比没有要强的多,找到后我们用3dmax或者maya等软件将模型的格式转化成FBX格式,然后将模型(Tank)放到需要放的位置(项目文件asset的摸个文件下)系统会自动将模型导入到资源列表中,然后在资源列表中找到模型并将模型拖入游戏场景,利用菜单上的缩放功能将坦克模型缩放至适合大小,并调整位置最后将坦克模型付给Mytank作为Mytank的一个子物体。

坦克模型已经做好了,现在开始给坦克一个炮弹,先在视图中创建一个球体(当做炮弹),调整大小就这样我们的炮弹有了替代品了,给球体添加一个component>physics>Rigidbody属性,是它具有物理属性,并把mass改为0.01,然后我们在资源管理模块中我们创建一个预物体(这个是用来复制经常用的物体),重命名为bullet,并将之前创建的球体拖到这个bullet形成一个炮弹的预物体,并写一个炮弹在碰撞时自动销毁的脚本:

using UnityEngine;

using System.Collections;

public class bulletxiaohui : MonoBehaviour {
void OnCollisionStay(Collision collisionInfo)
{
Destroy(gameObject);
}

}

这个脚本回事具有这个脚本的物体在发生碰撞时自动销毁,较少一些不必要的运行资源 。

            坦克以及炮弹都有了 ,我们就开始实现坦克发射炮弹的效果,首先在坦克的炮筒的正前方放置一个空的GameObject>Create Empty,重命名为bulletposition,它确定炮弹的发射位置,并将其拖到Mytank上成为一个子物体,这样的话会随着Mytank的移动而移动,做好这个以后,我们需要用脚本来实现发射过程,具体代码可以参考下面代码:

using UnityEngine;

using System.Collections;

public class Mytankfire : MonoBehaviour {
public Transform firepostion;//定义一个炮弹位置的变量
pub
9ed7
lic Rigidbody bullets;//定义一个具有物理属性的
public float bulletforce=10;

void Update () {
if(Input.GetKeyDown(KeyCode.Space))
{
Rigidbody bullet;
bullet=(Rigidbody)Instantiate(bullets,firepostion.position,firepostion.rotation);
bullet.rigidbody.AddForce(transform.forward*Time.deltaTime*bulletforce);
}
}

}

 写好以后我们将其赋予Mytank,然后我们单击Mytank我们会在Inspector中找到Mytankfire(Script)然后将Mytank的子物体bulletposition拖至Fireposition,以及将炮弹的预物体Mybullet拖至Bullets这样我们就可以实现坦克发射炮弹的效果了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息