1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【スタジオしまづ】カードゲームの作り方を学んでみる #2 カードの生成

Last updated at Posted at 2020-04-19

カードゲームが作りたかったので【Unityゲームスタジオ スタジオしまづ】さんの動画を見ながら学習してみる

シャドバ風!?カードゲームの作り方 #2 カードの生成
https://youtu.be/fDDGQKVF10M

前回はこちら
【スタジオしまづ】カードゲームの作り方を学んでみる #1 UIの実装

シーンの編集

動画時間0:30~
・いったんフィールドと手札のカードを削除
・ゲームオブジェクトの名前を変更
  Field → PlayerField
  Hand → PlayerHand
  Hero → PlayerHero
  CostText → PlayerCostText

ゲームマネージャー(GameManager)の作成

動画時間1:15~
・AssetsにScriptsフォルダーを作成
・ScriptsフォルダーにC#スクリプトを作成して名前を「GameManager」にする
・シーンに空のオブジェクトを作成して名前を「GameManager」にする
・ゲームオブジェクトのGameManagerにスクリプトのGameManagerをアタッチする
2-01.PNG

手札にカードを生成する動作を実装する

動画時間1:58~
・前段階としてプレハブのカードをシーン上に生成する

GameManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    [SerializeField] GameObject cardPrefab;
    void Start()
    {
        Instantiate(cardPrefab);
    }
}

インスペクターでCard PrefabにPrefabsフォルダのカードを設定して実行してみると
2-02.PNG

ヒエラルキー上にCard(Clone)という名前でカードが生成されていることがわかる

手札に生成するためには手札の場所を知っている必要がある
・スクリプトを手札の情報を持つように編集する

GameManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    [SerializeField] Transform playerHandTransform;
    [SerializeField] GameObject cardPrefab;
    void Start()
    {
        Instantiate(cardPrefab, playerHandTransform,false);
    }
}

Instantiateは引数に親要素を渡して生成することができる
今回使用する使い方はboolでfalseを指定することにより新しい親を基準として位置を設定するもののようです
Instantiate (Object original, Transform parent, bool instantiateInWorldSpace);
Unityスクリプトリファレンス

PlayerHandTransformにシーンのPlayerHandを設定して実行してみる
2-03.PNG

手札に生成できた

カードの生成をメソッド化して応用できるように

動画時間5:10~
CreateCardメソッドを作成してカードを手札に生成する処理を移す
さらにTransformを引数にすることで敵の手札にも生成できるようにする

GameManeger.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    [SerializeField] Transform playerHandTransform;
    [SerializeField] GameObject cardPrefab;
    void Start()
    {
        CreateCard(playerHandTransform);
    }

    void CreateCard(Transform hand)
    {
        Instantiate(cardPrefab, hand, false);
    }
}

今回はここまで


次回はこちら
【スタジオしまづ】カードゲームの作り方を学んでみる #3 カードデータの生成

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?