首页 > 编程知识 正文

unity制作3d游戏,unity3d贴吧

时间:2023-05-04 17:03:47 阅读:218539 作者:334

    本篇小型实例是为像本渣渣一样刚刚入门U3D的童鞋们制作的,当然理论上包括了设计一部完整游戏的主要内容,而不是单纯的讲某些函数怎么使用

                            ——也就是说,大部分API里面使用频率高的内容并不会详细解释,并且对于游戏不会进行比较高效的优化

    那么开始吧!

        在某个遥远的二维世界里,有一个正方形——我们姑且叫它“方块君”,方块君的宿敌是五边形君,因为——

                啊~~~五边~~~你比四边多一边~~~

        什么鬼,emmmmm,你只需要记住这个事实就可以辣

        但是方块君没有能够击败五边形君的力量,于是它向卡密撒嘛求助,卡密撒嘛告诉它,它可以许下一个愿望,获得某种能力,但是五边形君们也能获得同样的能力,于是方块君考虑再三,决定向神所要移动和攻击的能力什么原来方块君是不会动的吗  什么你不写脚本方块君能动吗

    于是,这部脑子一热突发奇想的垃圾游戏就诞生了(由于压根没有什么美术资源又懒得去AssetsStore找,所有的东西都是几何图形拼成的):

        

你没有看错就是这么简单

于是乎,方块君怒了:你不就是把我放在一个梯形里面吗!

卡密撒嘛:别急嘛,之后你就能享受到“民主自由”的感觉了,等我敲个代码……将这些扔进FixedUpdate()里面就行辣

        if (Input.GetKey(KeyCode.LeftArrow)&&transform.position.x>=-8f)//按住左方向键并限制范围 { transform.Translate(Vector2.left* Time.deltaTime*5f); }  if (Input.GetKey(KeyCode.RightArrow)&&transform.position.x<=8f)//右方向键 { transform.Translate(Vector2.right* Time.deltaTime*5f); }

这样也就实现了方块君的左右移动

但是方块君还不知足:光扭扭腰怎么行,我还得会飞,会时空折跃……教练我想学

卡密:滚犊子,我也想学,那就随便给你做一个“跳跃”吧!

懒惰是第一生产力,计算机图形学第一大定律——只要他看起来是对的,那么他就是对的,方块君的跳跃也可以用transform.Translate()进行模拟:

我们先定义两个状态:

public bool canJump = true, jumping;//是否可以起跳,是否正在跳跃

再定义一个浮空时间:可以根据个人喜好修改,如果是正无穷……恭喜方块君你会飞啦(当然原理其实不是这样的)

public float jumptime = 0.5f;

之后我们写一个跳跃函数!?怎么看起来这么辣鸡

void jump() { if (canJump)//如果能跳 { canJump = false;//那么不能跳 jumping = true;//那么正在跳 jumptime = 0.5f;//那么重新设置跳跃时间 } }

别急,真正的大头是要放在FixedUpdate()里面的:

if (transform.position.y <= -2f)//如果方块君在“地面” { canJump = true;//那么它可以再次起跳 } if(Input.GetKey(KeyCode.UpArrow)){//如果按下上方向键 jump(); } if(jumping){//如果正在跳 if(jumptime>0.375f){将时间分为三部分:上升,滞空,下降,比例理论上是1:2:1(当然你也可以按自己的喜好来) transform.Translate(Vector2.up * Time.deltaTime * 8f); }else if(jumptime<=0.15f&&jumptime>=0f){//这里是一个玄学的地方,本来应该是jumptime<=0.125f,但是这样会导致方块君回不到原来高度 transform.Translate(Vector2.down * Time.deltaTime * 8f); } jumptime -= Time.deltaTime;//计时器 } if(jumptime<=0){//跳完啦 canJump = true;//恢复原来的设定 jumping = false; }

那么我们还是对里面相关的东西进行解释:

    ·常数们:

            由于我们做的只是一个单场景小游戏,所以很多功能还是使用常数效率更高,比如对移动距离的判定:

            

所以横坐标绝对值不超过8

     ·对于“跳跃”:

            可以发现,如果一直按住上方向键,方块君的跳跃是有周期的,也就是说,一直按住该按键,呈现的是这样的一个函数图像

其中,y轴表示方块君跳起的高度,x轴表示时间,各位可以看一下方块君起跳的速度应该是8个单位每秒,在落地之后又可以再次起跳

我们通过计时器来进行这样的设计:

    简单来说:一旦时间达到设定值,就可以执行一次操作,并且重设时间


    所以,方块君的第一个愿望终于满足辣,接下来我们还会设计新操作让方块君可以射出子弹,拭目以待吧——当然对于lqdlz根本不是什么问题吧……自己也要继续努力啊(懒得优化是病得治——虽然认真做项目的时候肯定会优化的辣)


啊啊啊不行写得好烂啊,求各位大佬可以指正一下啊啊啊

毕竟第一次写比较(专业?)的blog咩

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。