纳金网
标题:
Unity3D编写雷电游戏(三)
[打印本页]
作者:
会飞的鱼
时间:
2012-1-17 15:06
标题:
Unity3D编写雷电游戏(三)
Weapon类是所有武器的基类,新的武器继承于它,设置发射点,子弹模型,然后实现Fire函数就可以了。
WeaponManager用于管理所有武器,切换武器。
using UnityEngine;
using System.Collections;
public class WeaponManager : MonoBehaviour {
public Weapon m_CurWeapon;
private float m_FireElapseTime = 0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
m_FireElapseTime += Time.deltaTime;
if (Input.GetKey(KeyCode.Space))
{
if ( m_FireElapseTime > m_CurWeapon.GetBulletInterval())
{
m_CurWeapon.Fire();
m_FireElapseTime = 0;
}
else
{
}
}
}
}
记录子弹发射后的时间,然后在大于时间间隔后才能发射下一个子弹。
武器父类:
using UnityEngine;
using System.Collections;
using System;
public class Weapon : MonoBehaviour {
//子弹时间间隔
protected float m_fBulletInterval = 0;
//子弹类型
public String m_typeName ="";
public float GetBulletInterval()
{
return m_fBulletInterval;
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public virtual void Fire()
{
}
}
最基本的一种子弹:
using UnityEngine;
using System.Collections;
public class WeaponNormal : Weapon {
private const int MAX_FP = 2;
public Transform[] m_FirePoint = new Transform[MAX_FP];
public Rigidbody m_BulletPre;
WeaponNormal()
{
m_fBulletInterval = 2;
m_typeName = "Normal";
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public override void Fire()
{
for(int i = 0; i < MAX_FP; i++)
{
Rigidbody clone = (Rigidbody)Instantiate(m_BulletPre, m_FirePoint
.position,
m_FirePoint
.rotation);
clone.velocity = transform.TransformDirection(Vector3.forward * 20);
}
}
}
m_FirePoint是一个数组,存储了发射子弹的位置。在编辑器中,可以在飞机周围用空的GameObject放置一系列炮口的位置,然后拖入这个数组中。MAX_FP定义了炮口的数量。这里边用到了速度属性,这个是rigidbody才有的,所以在设置子弹的prefab时一定要为它加上rigidbody才行。
结构如下图所示:
最后的效果图:
作者:
晃晃
时间:
2012-4-6 23:21
赞一个,哈哈
作者:
奇
时间:
2012-5-6 23:26
我也来支持下
作者:
晃晃
时间:
2012-5-26 23:20
先垫一块,再说鸟
作者:
奇
时间:
2012-6-7 23:19
非常感谢,管理员设置了需要对新回复进行审核,您的帖子通过审核后将被显示出来,现在将转入主题
作者:
奇
时间:
2012-10-15 23:26
加精、加亮滴铁子,尤其要多丁页丁页
作者:
菜刀吻电线
时间:
2012-10-22 23:30
已阵亡的 蝶 随 风 舞 说过 偶尔按一下 CTRL A 会发现 世界还有另一面
欢迎光临 纳金网 (http://old.narkii.com/club/)
Powered by Discuz! X2.5