【完走目指す】初心者が25日で強くなる Advent Calendar 2022
24日目です。昔作ったゲームがどっか行ったので、代わりにライツアウトを作ります
クリスマス
クリスマスなのに、クリスマスネタが思い浮かばなかったので、メダル落としを作ります。
制作
次に、メダルを落とす枠組みを用意します。
メダルが落ちないようにします。
画像では見えていないと思いますが、前面に透明のcubeを設置してあります。これでメダルの動きを見ることができるとともに、メダルが脱線してしまうのを防いでいます。
では、いったんメダルを落として確認します
メダルが元の位置から動きませんでした。
どうやら壁に挟まってるっぽいです。
capsule collider
メダルの当たり判定にはこのCapsule Colliderを使っています。
Cubeとかのcolliderは、cube自体の大きさを変えた時にいい感じに調整されます。
しかし、これの場合は
なんかおかしいことになるようです。
なので、手動で直しましょう。
mesh colliderに変えて、convexにチェックを入れます。
最終的に
こうなりました
ちゃんと地面でメダルが止まりました。
障害物
障害物を作ります
例えば、棒を置いておけばメダルが当たった時にいい感じに左右のどちらかに移動してくれます。よくあるやつです。
メダルと同じ要領で作りました
メダルと同じ大きさにすると、途中でメダルが引っかかって止まることがあるのでメダルの大きさを倍にしました。
これに加えて、メダルがワープするものも作ってみようと思います。
まずは画像を用意します
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Warp : MonoBehaviour
{
public GameObject Medal;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void OnCollisionEnter(Collision collision)
{ if (collision.gameObject.tag == "Medal")
{
Medal.transform.position = new Vector3(0.2f, 21, 0);
}
}
}
前にやった衝突を使います。
メダルのタグが付いているオブジェクトが衝突したら、メダルの位置が変わります。
衝突すると、上に移動します。
メダルを落とす
今の状態では同じ場所から落として同じ位置に移動しているので、同じ結果が得られます。
しかし、それだとよくないので任意でメダルの出す位置とかを変えられるようにします。
とりあえず、今日はここまで。
今日のまとめ
衝突検知の仕方の復習をした。