この記事は、【完走したい】楽しくいろいろやる Advent Calendar 2023の7日目です。
エアホッケーを作ります。
続きです。3日目です。
終わらないので明日もやります。
ホッケーのパックを作る
はじくやつです。
プッシャーと同様、オブジェクトを作ってprefab化します。
二人そろってゲームを始めるときに出るようにします。
重要 2つ目のオブジェクトを作成するときはInstantiateで生成するとエラーが出ます
どうやら、prefab化したオブジェクトをいったんHierarchyに戻し、Photon ViewとPhoton Transform Viewをつけるだけでいいみたいです。
こんな感じになりました。
その後
いろいろあって3dのプロジェクトに変更しました。
どうやったのかというと、
Edit>projectsettings>Editor
の中の
'Defalt Behaviour Mode'を3dにしただけです。
簡単に変更できます。
土台を作る
全て作った後に撮った写真なのでわかりにくいかと思いますが、今は
・地面
・壁
があれば十分です
↓画像
青い壁がちょっと変な形をしているのがわかると思います。
実は、ボールのはね方によってボールが壁にくっついてしまうことがありました。
その為、壁にくっついたボールを取るために出っ張りを付けました。
このでっぱりは、scale(1,1,1)のcubeをx軸に45度回転させることで作れます。
パック(作り直し)
sphereで代用しました
中身
using Photon.Pun;
using Photon.Realtime;
using Unity.VisualScripting;
using static Unity.VisualScripting.Member;
public class BallControll : MonoBehaviourPunCallbacks
{private Rigidbody rb;
public bool Once = false;
public int BallRotate;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (PhotonNetwork.InRoom)
{
if (PhotonNetwork.CurrentRoom.PlayerCount >= 2)
{
if (photonView.OwnerActorNr == 0)
{
if (Once == false)
{
Once = true;
rb = this.GetComponent<Rigidbody>();
BallRotate = Random.Range(0, 360);
Transform myTransform = this.transform;
Vector3 localAngle = myTransform.localEulerAngles;
localAngle.y = BallRotate;
myTransform.localEulerAngles = localAngle;
Vector3 Kasoku = new Vector3(4f, 0, 4f);
rb.AddForce(Kasoku, ForceMode.VelocityChange);
}
}
}
}
}
}
ボールをランダムに角度をつけて、速度をつけています。
が、これではなぜか角度は変えられませんでした。
ボールは動いているので、とりあえずOKです。
今日の分ここまで
まとめ
現在のルーム人数カウント
'PhotonNetwork.CurrentRoom.PlayerCount'
などを学びました。
参考