2016-10-12 16:03:35 qq_28221881 阅读数 7090

值得注意的是,模型要于代码的方向和轴向一致,多多改几次就能调整合适的了。

制作空物体,放在飞机模型合适的位置

using UnityEngine;
using System.Collections;

public class FlyTest : MonoBehaviour {
    public GameObject box;

    private Transform Head;
    private Transform LeftAirfoil;
    private Transform RightArifoil;
    private Transform LeftTailAirfoil;
    private Transform RightTailAirfoil;


    private float speed = 250.0f;

    private Rigidbody rb;

    void Start()
    {
        box = GameObject.Find("Plane");

        Head = transform.Find("Head");
        LeftAirfoil = transform.Find("LeftAirfoil");
        RightArifoil = transform.Find("RightAirfoil");
        LeftTailAirfoil = transform.Find("LeftTailAirfoil");
        RightTailAirfoil = transform.Find("RightTailAirfoil");

        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
       
        transform.Translate(Vector3.right * Time.deltaTime);
        //俯冲
        if(Input .GetKey (KeyCode.W ))
        {
            rb.AddForceAtPosition(transform.up * 5.0f, LeftTailAirfoil.position);

            rb.AddForceAtPosition(transform.up * 5.0f, RightTailAirfoil.position);
        }
         //爬升
        else if(Input .GetKey (KeyCode .S ))
        {
            rb.AddForceAtPosition(transform.up * -5.0f, LeftTailAirfoil.position);

            rb.AddForceAtPosition(transform.up * -5.0f, RightTailAirfoil.position);
        }
        //左翻滚
        else if(Input .GetKey (KeyCode .A ))
        {
            rb.AddForceAtPosition(transform.up * -5.0f, LeftTailAirfoil.position);

            rb.AddForceAtPosition(transform.up * 5.0f, RightTailAirfoil.position);
        }
        //右翻滚
        else if(Input .GetKey (KeyCode .D ))
        {
            rb.AddForceAtPosition(transform.up * 5.0f, LeftTailAirfoil.position);

            rb.AddForceAtPosition(transform.up * -5.0f, RightTailAirfoil.position);
        }
    }
}


2012-10-06 23:15:14 tinya0913 阅读数 7754

本视频主要讲述Unity3d中实现飞行模拟的方法,通过本次课程我们将学会在空间中实现自由飞行的控制,效果类似二战空骑兵、鹰击长空等飞行模拟类游戏。课程中我也将会给大家介绍相关的飞行原理,介绍飞机的基本构成、飞机的常用布局、飞行姿态控制等航空方面的基础知识。

更多内容请关注新浪微博@筑梦天下文化科技 http://weibo.com/mongtx


请同时关注团队新微博@筑梦创想 http://weibo.com/mongcc

此外,本人是广州在校大三学生(软件工程专业),现在诚求各单位提供实习岗位,我希望能通过实习进一步提高个人专业技能和充实职业工作经验,欢迎对我感兴趣的单位随时与我联系,此外我们团队将会继续推出更多精品的课程为大家服务,希望大家能继续支持,持续关注,谢谢大家!

联系方式
E-mail:gsh0913@qq.com
QQ:264965161

教学视频地址:http://www.tudou.com/programs/view/rBreIRfIsVE/?resourceId=0_06_02_99


公开课片头_1280_800.png

2012-4-4 20:12:51 上传
下载附件 (499.31 KB)


内容提要_1280_800.png

2012-4-4 20:13:07 上传
下载附件 (273.07 KB)


飞行截图.jpg

2012-4-4 20:13:14 上传
下载附件 (34.92 KB)


飞行截图2.jpg

2012-4-4 20:13:19 上传
下载附件 (35.07 KB)


截图01.jpg

2012-4-4 20:17:28 上传
下载附件 (31.57 KB)


截图02.jpg

2012-4-4 20:17:41 上传
下载附件 (33.55 KB)


截图03.jpg

截图04.jpg

PS:由于有部分网友反映本工作室发布的视频教程内容过于简单,我们希望在此声明一下,我们发布教学视频的目的并不是为了炫耀些什么,教程大部分都为基础知识,面向的主要为入门级的网友。我们希望有更多的网友能通过我们的视频进入游戏开发的殿堂,并且我们希望通过本系列教程结交到更多热爱游戏的朋友,我们的教程会遵循渐进的原则,步步为营由浅及深,希望大家多多包含,继续鼎力支持!

2015-06-06 16:35:44 zjq2008wd 阅读数 1724


简介:

感谢:

本应用使用《Unity3D\2D手机游戏开发》提供的资源,版权归属其作者,在此感谢作者。此应用时基于原作的二次开发。

增强要素:

1.加入2s cd的机身旋转,旋转时保持无敌状态,人挡杀人。。。

2.加入0,5s cd的跟踪导弹,导弹随机打击目标敌人。

3.加强小飞机AI,小飞机拥有三种飞行模式,直线,sin曲线,以及追踪玩家。以不同概率随机选择飞行模式。

技术要素:

1.对于玩家飞机,采用简单switch-case有限状态机。

2.对于小飞机AI则使用RAIN AI 行为树。

3.书中源程序包升级为unity5.0,并消除了升级出现Mesh trigger bug。


player部分状态机源码

         void Normal(){
		if (Input.GetMouseButton (1)) {
			state=PlayerState.Arounding;
		}
	}
	void Shoot(){
		m_superRate -= Time.deltaTime;
		if (m_superRate <= 0) {
			m_superRate=0.5f;
			Instantiate (m_srocket, m_transform.position+new Vector3(0.5f,0,0), m_transform.rotation);
			Instantiate (m_srocket, m_transform.position+new Vector3(-0.5f,0,0), m_transform.rotation);
		}
		
		m_rocketRate -= Time.deltaTime;
		if (m_rocketRate <= 0) {
			m_rocketRate = 0.1f;
			
			if (Input.GetKey (KeyCode.Space) || Input.GetMouseButton (0)) {
				Instantiate (m_rocket, m_transform.position, m_transform.rotation);
				m_audio.PlayOneShot (m_shootClip);
			}
		}
	}
	void CoolDown(){
		m_around -= Time.deltaTime;
		if (m_around <= 0) {
			m_around = 1f;
			state=PlayerState.Normal;
		}
	
	}

EnemyAI行为树:


注意事项:

1. plane triangle mesh unity5.0 不支持trigger

2.RAIN AI ai 的body 的transform 是一份拷贝文件,修改它无法移动游戏对象,可以使用ai.motor.moveto

github地址

https://github.com/RonTang/ShootingGamex/

2011-09-23 10:11:50 Tecna 阅读数 214

 新建一个TestFlay.js脚本,内容如下:

var speed = 6.0;

var jumpSpeed = 8.0;
var gravity = 0;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;
function FixedUpdate() {
my=moveDirection.y;
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
if (grounded) {
  moveDirection *= speed;
} 
else {
  moveDirection *= speed+transform.position.y/5;
  moveDirection.y=my;  
}
if(transform.position.y>=6){
if(Input.GetKey ("e")) {//按下e键向下飞行
  transform.Translate(0, -1, 0);   
}
}
if (Input.GetKey ("q") ) {   //按下q键向上飞行
  transform.Translate(0, 1, 0);
}
if(Input.GetKey("left shift")) {
  speed=6*5;
} else {        
  speed=6; 
}
moveDirection.y -= gravity * Time.deltaTime;   
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}
@script RequireComponent(CharacterController)
private var myWalker: FPSWalker=null;
var maxHeight: float=250;
function Start () {
myWalker = gameObject.GetComponent(FPSWalker); 
}
@script RequireComponent(FPSWalker)

 将它绑定到First Person Controller上,然后将前面的对勾勾掉。

再建一个脚本Fly.js,内容为:

var play:GameObject;
function Update () {
}
function OnGUI(){
if(GUI.Button(Rect(215,280,75,30),"Normal-Walk")){
    play.GetComponent("FPSWalker").enabled  = false;
    play.GetComponent("TestFly").enabled  = true;
}
if(GUI.Button(Rect(230,200,50,30),"Start-Fly")){
    play.GetComponent("FPSWalker").enabled  = true;
    play.GetComponent("TestFly").enabled  = false;
}
}

 

将其绑定到一个新建的GameObject上,运行即可看到效果

2015-05-11 15:02:18 yslwhy 阅读数 760

经过几天时间的练习开发,实际上不需要几天,都是由于我懒而已。每天练习开发不到2小时。掌握了unity开发游戏的基本过程。做出了个如下图的雏形。


记几个重要的函数吧。
1.OnTringgerEnter(Collider other)//勾选碰撞器Is Trigger后可以触发此函数,用作碰撞函数。

2.Destroy(GameObject,2)//销毁函数,可以消耗游戏物体,第二个参数为时间

3.transform.Translate(new Vector3(0,0,speed*Time.deltaTime))//位移函数,改变游戏物体位置

4.audio.PlayOneShot(m_shootClip);//播放声音,声音源一般要附作物,附作物销毁后声音也会消失

5.Instantitate(m_enemy,m_transform.position,Quaternion.identity)//初始化创建函数,这里用来创建敌人

6.Awake()//游戏实例化时执行一次早于Start

7.OnGUI()//显示GUI函数

Unity发射子弹

阅读数 3116

没有更多推荐了,返回首页