您的位置:首页 > 其它

软件工程第二次作业

2015-05-30 23:47 246 查看
软 件 工 程 第 二 次 作 业

姓名:张建军 学号:2012211544 班级:0411202

同组成员:屈艺、张建军

屈艺(2012211588)博客
张建军(2012211544)博客

游戏名称:Run about Madly
使用软件:Unity3D
脚本编程语言:C#

第一次听到这个题目的时候,自己不敢相信。因为当时我并不了解一些开发游戏的引擎。当时我设想了一下,如果我要把以前写MFC的一个俄罗斯方块改成3D的效果,要把每一个方块都画出3D并且能够切换视角变换,不仅要涉及到很多数学知识,而且工作量肯定不小,就算每天把所有时间用在这个上面,可能到交作业的时候也完成不了。不过后来问过一些朋友同学,虽然他们也介绍了很多比较好的3D引擎,不过最后我还是选择了Unity3D。一开始代码也成问题,写脚本要用BOO、JS和C#。里面的JS还不算真正的JS,顶多算UnityScript。还好我选择的选修课是C#,最后决定用C#来写脚本。给它起名为英文完全是为了听起来酷一点,实际上就是狂奔的意思。。因为游戏内容简单,没有太多情节,主要就是AWD切换视角和奔跑,shift装死,鼠标左键攻击,空格跳跃,情节就是在整个地图欣赏风景。。如是而已。。另外还做了一个撞击的小游戏,点击鼠标左键就能用小球撞击立方体,如果把立方体撞掉落,就算赢了。

(雏形,细节还需处理):

遇到的问题:
中途的问题真的是一波又一波:对脚本语言的不熟悉,第一次使用Unity3D软件。统一的教程不好找。写游戏里面又遇到各种不熟悉的函数和调用方式。反正最后都被克服了。。不过真正值得说的,是后面的路还长,因为我自己觉得从此以后要常用这个软件了,而且,这个上面还有好多知识需要学习。

总结:
这是我第一次接触Unity3D,我感觉我已经爱上它了。以后可能会长期接触这个软件,因为我感觉它真的太棒了。因为缺乏一些插件和素材,我去淘宝上买了一些插件和教学视频来慢慢看,个人感觉店主给的教程很好。但是内容不够全面。以后我还会积累这方面的资料和知识。

一些游戏截图:

设计该游戏时候的Unity界面:









站姿:



攻击:



奔跑:



装死:









跳跃:



无聊的时候添加的一个极不融入场景的箱子来撞 ==:







其他一些场景:







小游戏截图:
tip:
左上角可以调整力度,太小了不够,太大了如果跑歪了很难控制回来;







部分脚本代码:

using UnityEngine;
using System.Collections;

public class Movecamera : MonoBehaviour{
//GameObject g;
// Use this forinitialization
void Start () {
// g = GameObject.Find ();
}
// Update is called once perframe
void Update () {
if (Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward*.5f);
if (Input.GetKey(KeyCode.A))
transform.Rotate (newVector3(0,-10,0));
if (Input.GetKey(KeyCode.D))
transform.Rotate (newVector3(0,10,0));
// if (Input.GetKey(KeyCode.S))
// transform.Translate(Vector3.back);
// if (Input.GetKey(KeyCode.Space))
// transform.Translate(Vector3.up);
//if (Input.GetKey(KeyCode.LeftShift))
// transform.Translate(Vector3.down);

}
}

using UnityEngine;
using System.Collections;

public class PersonActive : MonoBehaviour {

GameObject person;
Animation pam;
bool forWalk=false;
bool forAttack=false;
bool forJump=false;
bool forKneel=false;
// Use this for initialization
void Start () {
person = GameObject.Find("m_person");
pam = person.GetComponent ();
}
// Update is called once per frame
void Update () {

if (Input.GetKey (KeyCode.W) || Input.GetKey(KeyCode.D) || Input.GetKey (KeyCode.A)) {
forWalk = true;
}

if (Input.GetKeyDown (KeyCode.Space))
forJump = true;
if (Input.GetKey (KeyCode.LeftShift))
forKneel = true;

if (Input.GetMouseButtonDown (0))
forAttack = true;
if(forKneel &&!(forWalk || forAttack||forJump))
pam.Play("death");

if (forWalk&&!(forKneel || forAttack||forJump)){
pam.Play ("run");
}
if (forAttack&&!(forWalk || forKneel||forJump)){
pam.Play ("attack5");

}
if (forJump&&!( forAttack||forKneel)) {
pam.Play ("jump");

}
if ((Input.GetKeyUp (KeyCode.W) || Input.GetKeyUp (KeyCode.D)|| Input.GetKeyUp (KeyCode.A))&& !(Input.GetKey (KeyCode.W) || Input.GetKey (KeyCode.D) || Input.GetKey(KeyCode.A))) {
forWalk = false;
pam.Play("attack_idle");
}
if (Input.GetKeyUp (KeyCode.LeftShift))
forKneel = false;

if (Input.GetKeyUp(KeyCode.Space))
forJump =false;

if (Input.GetMouseButtonUp(0))
forAttack = false;

//if (!(forWalk || forAttack || forKneel || forJump))
// pam.Play ("idle");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: