Unity_Game #2


210824
Unity_Game #2
  • 地図テストとプレーヤー動的実施
  • -テスト用の大きなスケルトンを一時的に描画

    -プレーヤーオブジェクトを作成し、カメラの位置とサイズを調整します.

    プレイヤーの移動は左右、ジャンプを体現します.
    動作に応じて、カメラをフォローさせ、プレイヤーの視野を確保します.
  • 頃移動
    -Movement2D.cs
  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerController : MonoBehaviour
    {
        private Movement2D movement2D;
    
        private void Awake()
        {
            movement2D = GetComponent<Movement2D>();
        }
    
        // Update is called once per frame
        void Update()
        {
            float x = Input.GetAxisRaw("Horizontal");   // 좌 우 입력
            movement2D.Move(x); // 입력받은 float x로 이동방향 제어
        }
    }
    -PlayerController.cs
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Movement2D : MonoBehaviour
    {
        [SerializeField]
        private float speed = 5.0f; // 속도   
        private Rigidbody2D rigid2D;    
    
        private void Awake()
        {
            rigid2D = GetComponent<Rigidbody2D>();  // Rigidbody2D의 컴포넌트를 가진다.
        }
    
        public void Move(float x)
        {
            // x 축 이동은  x * speed, y 축은 기존의 속력 값
            rigid2D.velocity = new Vector2(x * speed, rigid2D.velocity.y);
        }
    }
    Player Controlから入力を受信してMovementを呼び出す移動関数
    運転時左右キーまたは入力a(左)d(右)移動確認
  • ジャンプを追加
    -Movement.cs
  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Movement2D : MonoBehaviour
    {
        [SerializeField]
        private float speed = 5.0f; // 속도   
        [SerializeField]
        private float jumpForce = 8.0f; // 점프 힘 (클수록 높이 점프한다)
        [SerializeField]
        private float gs = 1.5f;
        private Rigidbody2D rigid2D;
        
    
        private void Awake()
        {
            rigid2D = GetComponent<Rigidbody2D>();  // Rigidbody2D의 컴포넌트를 가진다.
        }
        private void FixedUpdate()
        {
            rigid2D.gravityScale = gs;    // 점프 높이 조절
        }
    
        public void Move(float x)   // 좌우 이동
        {
            // x 축 이동은  x * speed, y 축은 기존의 속력 값
            rigid2D.velocity = new Vector2(x * speed, rigid2D.velocity.y);
        }
        public void Jump()  // 점프
        {
            // fumpForce의 크기만큼 위 방향으로 속력 설정
            rigid2D.velocity = Vector2.up * jumpForce;
        }
    }
    -PlayerController.cs
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerController : MonoBehaviour
    {
        private Movement2D movement2D;
    
        private void Awake()
        {
            movement2D = GetComponent<Movement2D>();
        }
    
        // Update is called once per frame
        void Update()
        {
            float x = Input.GetAxisRaw("Horizontal");   // 좌 우 입력
            movement2D.Move(x); // 입력받은 float x로 이동방향 제어
    
            // 스페이스 키를 누르면 점프
            if (Input.GetKeyDown(KeyCode.Space))
            {
                movement2D.Jump();
            }
        }
    }
    Movement.csにgravityScaleを設定する変数を作成しました.
    -rigid2D.重力スケールじゅうりょくすけーる:重力係数じゅうりょくけいすう
    プレイヤーに与える重力が大きいほどジャンプが低くなります.

    リファレンス
    https://velog.io/@kimhaech/Unity2DBasic-6