Unityでカーリングゲームを作る #9 マテリアルをスクリプトで変更する

投稿者: | 2020-01-02

今まではCubeをストーンに見立てて使っていて、相手の手番のときは色を変えていました。


public Color color2;
----
if (num % 2 == 1)
{
    player = false;
    GetComponent<Renderer>().material.color = color2;
}

カーリングストーンのマテリアルを2種類作ったので、マテリアルをスクリプトで変更してみます。
デフォルトでストーンには黄色いマテリアルを付けています。

これをプレハブ化して、今まで使っていたCubeのストーンのプレハブに付いているコンポーネントを全て付けます。

コンポーネントの右上の歯車マークから、値のコピー&ペーストができます。

CubeではBoxコライダーを使っていましたが、新しいストーンではMeshコライダーを使います。Rigidbodyも使うのでConvexにチェックを入れます。

フィジックマテリアルもアタッチします。

的(ハウス)に合わせてストーンのスケールも変えました。

今まではカラー型の変数をpublicで宣言して、インスペクタにカラーピッカーを表示していましたが、代わりにデフォルトで使わなかったもう一方のマテリアルをアタッチするだけで十分です。

//public Color color2;
public Material redStoneMaterial;

そして、色を変えるときと同様に、レンダラーコンポーネントのマテリアルプロパティにこれを代入するとマテリアルを変更できます。

if (num % 2 == 1) // 0から初めて奇数番目のストーンのとき
{
    player = false; // 手番を相手にする
    GetComponent<Renderer>().material = redStoneMaterial; // 赤い方のマテリアルにする
}

メッシュが複雑な形をしているので動きがすこし変かもしれません。

ストーンの底の形のせいで少し滑りにくいのかもしれません。

次はMeshコライダーを少しシンプルな形にしてみます。

コメントを残す

メールアドレスが公開されることはありません。