Unityの勉強中の者です。
今回の制作にて、足場を生成させる処理を実装したいと考えております。
・実現したいこと・
プレイヤーがキーを入力した時に足場が生成される。
足場の生成位置がプレイヤーの手前。
向いている方向に対して足場を設置。
試していること
・キーを入力した時に足場が生まれる処理を実装したところ。
実装できない部分
足場の生成位置がプレイヤーの手前。
向いている方向に対して足場を設置
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
プレイヤーの向いている方向を取得したいと判断して回答します
プレイヤーの前方ベクトルは transform.forward
で取得が可能です
プレイヤーの位置は transform.position
で取得できるので
transform.position + transform.forward * [移動距離]
と記述すればプレイヤー前方[移動距離]mの位置が求まります
投稿2018/05/10 03:53
総合スコア2378
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/11 12:01
0
プレイヤーの正面がZ軸の正の方向に設定されていることを前提とします。
以下のスクリプトをプレイヤーにつけてください。
(複数レイヤーから成るプレイヤーなのでしたら一番上の親につけてください)
C#
1public class BlockGenerator : MonoBehaviour { 2 // どの程度の位置に置くか, Inspectorで調節してください 3 public Vector3 offset = new Vector3(); 4 // 生成する足場のプレハブです。オブジェクトプールしてたら適宜読み替えてください 5 public GameObject blockPrefab; 6 7 // 足場生成イベントです。生成したいときに呼び出してください 8 public void Generate() { 9 // 生成する位置です。 10 // プレイヤーのワールド座標にオフセット分ずらしてます。 11 // プライヤーが色んな回転をすることに対応しているのでいらなければ適宜削除してください。 12 Vector3 position = transform.position + 13 transform.up * offset.y + 14 transform.right * offset.x + 15 transform.forward * offset.z; 16 // 生成しています。回転はいじってません。 17 Instantiate(blockPrefab, position, transform.rotation); 18 } 19 20 // テスト用です。 21 void Update() { 22 if(Input.GetKeyDown(KeyCode.G)) { 23 Generate(); 24 } 25 } 26}
投稿2018/05/10 04:12
総合スコア80
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/10 04:30
2018/05/10 06:25
2018/05/10 07:23
2018/05/10 07:54
2018/05/10 07:56
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。