プログラムコンテンツへスキップはじめてプログラムプログラミング初心者向けチュートリアルやUnity5やC#の記事を書いています。Unity5でTPSやトップダウンで弾を打つ方法Unityは物理演算を使った方法や使わない方法で、物体を移動または回転させられるので初心者からするといろんな方法がありすぎて、人によって書き方が違い学ぶのが大変です。5)」から、プレイヤーがマウスカーソルに向いて、弾を打つというロジックのみを切り出して1つのプロジェクトにしてみました。Input.GetAxisRawでキー入力を受け付けて、ローカル変数moveVelocityに値を保持します。5f;実際に移動する部分は、FixedUpdateメソッド内になります。AddForceもありますが、MovePositionを使うと補完されるのでなめらかに処理ができるそうです。MovePositionは、rigidbodyのinterpolation(補間)設定に従って移動する。MovePositionは、rigidbodyのinterpolation(補間)設定に従って移動する。Time.fixedDeltaTime);}プレイヤーの向きプレイヤーをマウスカーソルに向かせるには、以下の手順が必要になります。カメラからマウスカーソルへの光線を用意する。地面に上記光線を投射(Raycast)して、地面に当たった時の、光線の距離(長さ)を求める光線と長さから、ワールド座標上の地面のポイントを求める。そのままプレイヤーの向きを地面のポイントに向けると、下を向いてしまうのでプレイヤー自身のY座標を使う。2.XY平面に、光線を投射(Raycast)して、地面に当たった時の"光線の距離"(長さ)をrayDistanceで取得。4.下を向かないように、プレイヤーのY座標を使う。2.XY平面に、光線を投射(Raycast)して、地面に当たった時の"光線の距離"(長さ)をrayDistanceで取得。4.下を向かないように、プレイヤーのY座標を使う。(heightCorrectedPoint);}また配布するソースコードでは、デバッグ情報として、光線Rayを黄色で表示、プレイヤーから地面のポイントへの向きベクトルを黒線で表示、プレイヤーの高さに補正したベクトル(つまり今向いているところ)を灰色で表示できるようにしました。これらはDebug.DrawLine(開始ポイント、終了ポイント)関数で実装しています。Raycastで地面の座標を求めるだけでは下を向いてしまうので、高さをプレイヤーの高さに修正するのが大切です。(青色Z軸=画像では灰色の線)向きが正しくなったのであとは、その方向に弾を飛ばすだけです。LookAtでプレイヤーの向きが変わるということは、青軸Z軸が変化したことです。Vector3.forward(向き)で取得できます。ちなみにVector3.upで緑軸Y軸、Vector3.rightで赤軸X軸です。弾の発射口(マズル・Muzzle)をプレイヤーオブジェクトの子要素に用意すれば、当たり前ですが、この発射口はプレイヤーに追随して同じ向きに回転します。そのため、弾を発射するときには、このマズルの位置と回転情報で、インスタンス生成をします。bullet);}弾が飛ぶ仕組み弾はそのまま重力を無視して飛ぶようにしています。そのためmuzzle.rotationで設定した初期の向きが、弾の向きになるので、その方向に飛び続けるようにします。ソースコードとしては、Vector3.forward(向き)に速度を加えるだけなので簡単です。Shot.zipまとめ今回は、プレイヤーの向きをマウスカーソルに向けて、弾を発射させました。単純にRaycastで向きを変更するとプレイヤーが地面を向いてしまうので、Y座標を補正する方法も学びました。ゲームの動画チュートリアルではいろんなゲームロジックが混在して複雑になるので、機能の的を絞って、簡単なプロジェクトを作成すると理解が深まります。over)をやってみました。Unity5でJointを使ってみます。effects)をやってみました。generator)をやってみました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。brush)を作成するミニゲーム「どうぶつバスケット」を作りました。UnityのFlappyBirdStyleチュートリアルをやってみた感想。over)をやってみました。Unity5でJointを使ってみます。effects)をやってみました。generator)をやってみました。最近の投稿CocosCreator2.0で廃止(Deprecated)されたもの。60行でタイピングゲームを作ろう!Python3+Tkinterでタイピングゲームを作ってみました。PythonでSetIntervalとSetTimeoutと同じようなことがしたい。