Unity自主学习(二十七):物件跳跃

那麽今天来试着弄出用"空白建"控制物件跳跃的脚本内容吧!
那之前因为都是平面移动,所以我是想着改变座标就好,其实跳跃也是可以改变Y座标数值
再把增加的数值,慢慢减少到原本的数值,来产生方块落下的感觉,这始终不是最一般的做法,Unity有提供物理计算引擎,可以产生重力让物件自己往下掉,但我们的场景编辑区目前也没有地面,如果我们的方块产生重力了,就会无限往下掉,所以要先新增地面物件。
https://ithelp.ithome.com.tw/upload/images/20210927/20140176AM3xTQcNli.png
那我们的方块落下,会跟地面产生碰撞,游戏里的各个物件也都会彼此碰撞,所以我们要设定他们在物件属性检视区的"Collider"属性。
https://ithelp.ithome.com.tw/upload/images/20210927/20140176c789ALkymh.png
那接着要给予重力模拟,将要给予重力的物件添加"Rigidbody",就可以发现我们的物件有重力了。


而我们的方块因为有了重力,所以在离开地面时,Y座标会不断减少,随着物件落下,不断地改变座标值。
而接着只需要在添加Y座标的程序,就可以制造出跳跃的感觉了。

if (Input.GetKeyDown(KeyCode.Space))
        {
            transform.localPosition += new Vector3(0, 100, 0) * Time.deltaTime;
        }

那根据给予要增加的Y座标数值会有不同的跳跃高度,实际弄出来之後就有跳起来的感觉了。
而这次会用"Input.GetKeyDown()"来判断是因为跳跃是想按一下跳一下,而非一直按着就一直往上飞了
那实际结果大概就是这样

那仔细看可以发现有几次跳跃会产生方块滚动的情况发生,这是因为重力模拟的影响产生角度的倾斜
如果不希望物件在跳跃时有这种情况发生,我们可以从Rigidbody里面将Rotation的坐标轴锁起来。
https://ithelp.ithome.com.tw/upload/images/20210927/20140176pvfIASnJ6T.png
锁住之後,物件"Rotation"的数值就不会因为重力而改变,也就是物件不管倾斜的多严重,始终不会倒掉,因为物件的角度就已经是固定的了。


<<:  Unity自主学习(二十六):物件移动(5)

>>:  Unity自主学习(二十八):Time.deltaTime

[Tableau Public] day 16:试着分析appstore资料集-1

Ok接续昨天的进度,先新增一张工作表。 名称为「各类型app数量/占比树状图」,我们选择「F1」、「...

第19天~dialog+Menu

dialog的DEMO 掀开新档 id命名为btnalert onClick从java档来加入 再来...

Day08【Web】DNS 与 CDN

什麽是 DNS DNS 全称 Domain Name System 中文为「网域名称系统」, 可视为...

Day_29 Docker

Docker容器技术就不多赘述,可以让服务应用更广有更多玩法,在openwrt上只要硬体可以负荷,完...

[经验分享] 从开发转QA工程师?为何想要转职?开发与QA的差异?

大家好!本篇将会以我转职的心路历程作为主轴,我为什麽转职成QA?当开发与当QA差很多吗?当QA该注意...