Cách lập trình game đơn giản: bật mí cho người chưa biết gì?

  -  

Tiếp theo ta chế tạo một màn đùa đặt thương hiệu là GamePlayTrong màn hình hiển thị game ta thêm vào một sprite2D làm hình ảnh nền tiếp đến chỉnh thông số kỹ thuật scale của ảnh cho nó full màn hình.

Bạn đang xem: Cách lập trình game đơn giản: bật mí cho người chưa biết gì?

*

Trên screen game của chúng ta sẽ bao gồm các đối tượng người dùng sau :

người đào quà là một hình ảnh 2Dcác cục vàng lớn bé , kim cương … là các ảnh 2DHai đoạn text nhằm hiển thị thời gian và điểm số .Ta sẽ thêm vào các ảnh và text trên theo bối cảnh như dưới đây .

*

Tiếp theo ta sẽ tạo ra loại mỏ neo với sợi dây .Ta thêm vào một trong những sprite 2D để gia công sợi dây và chế tạo nó thành phần LineRenderer .Mỏ neo là 1 trong những sprite 2d và là đối tượng con của tua dây .

*

Để vẽ sợi dây ý tưởng là ta đang vẽ một con đường từ gốc sợi dây tới mẫu mỏ neo .Trong script của sợi dây ta viết hàm update như sau làm cho hai đầu của gai dây luôn luôn ở một điểm gốc và đầu cơ là vị trí của mỏ neo .

void Update () gameObject.GetComponentLineRenderer>().SetPosition(0, transform.position); gameObject.GetComponentLineRenderer>().SetPosition(1, luoiCau.position);Để cho mỏ neo xấp xỉ giống nhỏ lắc ý tưởng là ta sẽ mang lại sợi dây tảo một góc từ bỏ -angleMax cho tới angleMax chẳng hạn thì mỏ neo sẽ di chuyển theo vì nó là con của tua dây . Trong script của tua dây ta viết hàm sau.speed là tốc độ quay còn angleMax là góc quay.

Xem thêm: Top 50 Lời Chúc Mừng Sinh Nhật Bằng Tiếng Anh Hay Và Ý Nghĩa Nhất

void FixedUpdate() transform.rotation = Quaternion.Euler(0, 0,Mathf.Sin(Time.time * speed) * angleMax);Để khi chạm vào màn hình hiển thị thì mỏ neo dịch chuyển theo phía tứ nơi bắt đầu sợi dây tới mỏ neo ta viết script cho đối tượng người sử dụng mỏ neo như sau :ta xác minh velocity là vector hướng dịch chuyển của mỏ neo .

void checkTouchScene() bool istouch = Input.GetMouseButtonDown(0); if(istouch) velocity = new Vector2(transform.position.x - target.position.x, transform.position.y - target.position.y); velocity.Normalize(); sau khi xác minh được vector vận tốc thì vận dụng nó vào đối tượng người sử dụng vật lý của mỏ neo

void FixedUpdate() rigidbody2D.velocity = velocity * speed;Nếu mỏ neo dịch chuyển ra không tính tầm chú ý của camera thì ta cho nó dịch chuyển ngược lại bằng phương pháp đổi chiều vector vận tốc

void checkMoveOutCameraView() if(!gameObject.renderer.isVisible) velocity = -velocity; Bước tiếp sau ta sẽ khẳng định va va giửa mỏ neo và những cục vàng, kim cương cứng . Để làm điều này ta cung cấp các đối tượng đó nhân tố Boxcollider2D

*

Trong hàm OnEnterCollider2D của các đối tượng người sử dụng cục vàng hay kim cương ta viết ( đó là hàm bắt sự kiện khi các đối tượng người dùng collider khác đụng vào nó )Ta xét xem đối tượng người tiêu dùng va đụng là mỏ neo thì ta đổi chiều dịch chuyển của mỏ neo cùng giảm vận tốc kéo lên.

void OnTriggerEnter2D(Collider2D other) if(other.gameObject.name == "luoiCau") isMoveFollow = true; GameObject.Find("dayCau").GetComponentDayCauScript>().typeAction = TypeAction.KeoCau; GameObject.Find("luoiCau").GetComponentLuoiCauScript>().velocity = -GameObject.Find("luoiCau").GetComponentLuoiCauScript>().velocity; GameObject.Find("luoiCau").GetComponentLuoiCauScript>().speed -= this.speed; Đồng thời ta sẽ cho cục vàng dịch chuyển theo mỏ neo .Đến khi dàn ra thì ta xoá nó đi đồng thời cộng thêm điểm .

Xem thêm: Valheim System Requirements: Can My Pc Run It? Can I Run It

void moveFllowTarget(Transform target) if(isMoveFollow) Quaternion tg = Quaternion.Euler(target.parent.transform.rotation.x, target.parent.transform.rotation.y, 90 + target.parent.transform.rotation.z); transform.rotation = Quaternion.Slerp(transform.rotation, tg, 0.5f); transform.position = new Vector3(target.position.x, target.position.y - gameObject.GetComponentCollider2D>().collider2D.bounds.size.y / 2, transform.position.z); if(GameObject.Find("dayCau").GetComponentDayCauScript>().typeAction == TypeAction.Nghi) GameObject.Find("GamePlay").GetComponentGamePlayScript>().score += this.score; Destroy(gameObject); Để update điểm hiển thị với thời gian

void Update () timeText.text = time.ToString();scoreText.text = score.ToString();Kiểm tra nếu thời gian hết thì hoàn thành game

public IEnumerator UpdateTime () bool showroom = true; while(add) yield return new WaitForSeconds (1); if(time > 0) time --; if(time 0 && !endgame) endGame(); Trên đây là quá trình cơ phiên bản để làm game , để xem chi tiết chúng ta cũng có thể vào link github chuyển ở trên giúp thấy và sở hữu project về chạy thử.