タグ

2020年3月11日のブックマーク (4件)

  • UnityのメソッドAwakeとStartの違い

    今回はゲームの機能を作成するのではなく、AwakeとStartの違いと現状のプログラミングの仕方の問題点を見ていきます。 通常のクラスはMonoBehaviourを継承してクラスを作成していますが、MonoBehaviourで用意されているメソッドでAwakeとStartというものがあります。 この二つは同じタイミングで実行されるような気がしますが、実は違います。 わたしの場合あまり気にせずすべてStartメソッドで変数の初期化、ゲームオブジェクトの取得を行っていました。 なぜそうしているかと言うと、購入したの中で他に設定しているゲームオブジェクトを取得する際は、Awakeだと初期化処理がまだ行われておらず取得出来ない可能性があるので、Startメソッド内でやると良いと書いてあったからです。 AwakeとStartの違いをマニュアルで調べるUnityのマニュアルを見てみると、 ・Awak

  • メッシュ表面のランダムな座標を計算する 前編

    たとえば「あるメッシュの表面に沿って別のオブジェクトをランダムに配置したい!」という場合にどうやってその座標を取得するか、という話です。手っ取り早く実装するなら「メッシュの外側から中心方向に向かってランダムに Ray を発射し、メッシュコライダーと衝突した地点を取得する」という方法が楽で便利だと思います(参考: Unity 地表に沿ってオブジェクトを配置する)。ただ、その方法だと Ray の当て方やメッシュの形状によっては均等に取得できないので、今回はもう少し厳密に計算して求める方法を考えます。 アプローチとしてはこんなかんじ↓ 注意しないといけないのは 1. の三角形の選び方です。すべての三角形を同じ確率で選んじゃうと偏ってしまうので、面積に応じて選ばれる確率を変えないといけません。つまり、広い面ほど確率が高く、逆に小さい面ほど確率を低くする「重み付き」のランダムにする必要があります。

    メッシュ表面のランダムな座標を計算する 前編
  • メッシュ表面のランダムな座標を計算する 後編

    powazon
    powazon 2020/03/11
    面積の計算
  • 【Unity】オブジェクトの移動範囲を制限するMathf.Clampの使い方

    このようにすることでプレイヤーのx座標はMinのx座標より大きく、Maxのx座標より小さい値の中でしか動けないという意味になります。 このコードを transform.positionに入れれば良いです。 これだけ見ると簡単ですが、実際にプレイヤーなどのオブジェクトを指定していくとなかなか長いコードになります。 以下から説明していきます。 具体的な使い方 以下のようなコードを使うと、Playerのx座標は「wall_Leftからwall_Rightまで」で移動制限し、y座標は「wall_Bottomからwall_Topまで」で移動を制限します。 using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { GameObject Player; GameObject w

    【Unity】オブジェクトの移動範囲を制限するMathf.Clampの使い方