Unity2D横版游戏开发(一) 人物的移动和跳跃
生活随笔
收集整理的這篇文章主要介紹了
Unity2D横版游戏开发(一) 人物的移动和跳跃
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
導入素材
人物移動
人物跳躍?
我使用的Unity版本為2020.3.13f1c1,代碼編輯器VSCode?
導入素材
素材均來自https://itch.io/的免費素材
?我選擇的是https://rvros.itch.io/animated-pixel-hero素材
導入到Unity后全選人物圖片,在右側的檢測器里更改一些參數,然后點擊應用?
?修改像素大小為16
過濾模式選擇-點(無過濾器),這樣可以使圖片不會模糊
人物移動
? ? ? ? ?將adventurer-idle-00(待機圖片)拖入到場景內,修改名字為Player
? ? ? ? 為Player添加2D剛體和2D碰撞盒
·????????
? ? ? ? ?修改碰撞盒貼合Player即可
? ? ? ? ? 在項目窗口新建一個物理材質,命名為Player,將Friction和Bounciness都設置為0,并將該材質拖入到剛體的物理材質內 ,這樣做的原因是不會讓人物卡在墻上
代碼編寫,新建文件夾Scripts,并在其目錄新建腳本,命名為?PlayerControl.cs
?雙擊打開PlayerControl.cs,開始編寫移動代碼
using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerControl : MonoBehaviour {#region 組件private Rigidbody2D rb;//2D剛體#endregion#region 公開參數[Header("移動參數")]public float moveSpeed;//人物移動速度#endregionprivate void Start(){rb = GetComponent<Rigidbody2D>();}private void FixedUpdate(){Move();}// 人物移動 和 轉向private void Move(){float moveX = Input.GetAxis("Horizontal");rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);//判斷人物的朝向if (moveX > 0)transform.localScale = new Vector3(1, 1, 1);else if (moveX < 0)transform.localScale = new Vector3(-1, 1, 1);} }?返回Unity,測試
測試之前先在場景內放一個物體,并添加碰撞盒,這樣讓角色站在上面
人物跳躍?
?跳躍代碼,在移動代碼上添加
using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerControl : MonoBehaviour {#region 組件private Rigidbody2D rb;#endregion#region 公開參數[Header("移動參數")]public float moveSpeed;//人物移動速度[Header("跳躍參數")]public float jumpForce;//跳躍的力 (及高度)public float jumpAddForce;//長按跳躍 增加的高度public float jumpTime;//按下跳躍鍵的時間public float jumpStartTime;//初始時間public bool isJump;//是否正在跳躍[Header("環境檢測")]public float checkRadius;//檢測地面偏移public LayerMask whatIsGround;//地面圖層public Transform feetPos; //地面檢測點#endregion#region 私有參數public bool isGround;//是否在地面#endregionprivate void Start(){rb = GetComponent<Rigidbody2D>();}private void Update(){isGround = Physics2D.OverlapCircle(feetPos.position, checkRadius, whatIsGround);Jump();}private void FixedUpdate(){Move();}// 人物移動 和 轉向private void Move(){float moveX = Input.GetAxis("Horizontal");rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);//判斷人物的朝向if (moveX > 0)transform.localScale = new Vector3(1, 1, 1);else if (moveX < 0)transform.localScale = new Vector3(-1, 1, 1);}//人物的跳躍private void Jump(){//按下跳躍鍵if (Input.GetKeyDown(KeyCode.Space) && isGround){//將跳躍鎖定isJump = true;//跳躍rb.velocity = Vector2.up * jumpForce;jumpTime = jumpStartTime;}//長按跳躍鍵if (Input.GetKey(KeyCode.Space) && isJump == true){//當長按時間大于零if (jumpTime > 0){//在長按跳躍這段時間,跳躍rb.velocity = Vector2.up * jumpForce;//長按時間減去每一幀jumpTime -= Time.deltaTime;}}else{isJump = false;}if (Input.GetKeyUp(KeyCode.Space)){isJump = false;}} }哦,對了,剛體記得凍結Z軸,不然人物會倒的
至此人物移動和跳躍就寫完了?
總結
以上是生活随笔為你收集整理的Unity2D横版游戏开发(一) 人物的移动和跳跃的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 5.13版本正式发布(带下载链接)
- 下一篇: 使用林地可行性报告现状图要包含的内容清单