0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

22日目:ゴーカートから学ぶ乗り物VCIの作り方

Last updated at Posted at 2020-12-28

この記事はアドベントカレンダー「【VCI】テーマパーク を作ろう 」の記事です。

今回の内容

今回はゴーカートを作っていこうと思います。

ボタンを押すとどんどん加速し、ボタンから手を離すと止まるようにします。

今回は学ぶ技術は以下となります。
 ・オブジェクトの正面方向を取得する方法
 ・オブジェクトに速度を設定する方法

Unity概要

Unityは特に新しい設定はありません。乗る部分とハンドル部分は別々のVCIで作り、Jointでつなげています。
ほかの設定はどうするのがベストわかりませんでしたが、試行錯誤の結果今回は今回は以下のようになりました。
 ・カートのisGravityをON
 ・カートのConstraintsのFreezeRotationのx,zをON
 ・カートのMassを100に変更(こうした方が体などに押されて飛びにくくなるかもと思い設定。実際のところは不明?)
コースは特に何もしてないです。
 

コードの作成

今回作成する処理には、「オブジェクトの向きを取得」して「その向きにオブジェクトの速度を設定」するという流れとなります。
 ・ExportTransform
この中でGetForwardとSetVelocityを使用します。

コードは以下のようになります。

local kartSpeed= 0

function updateAll()
  local kart = vci.assets.GetTransform("Kart")
  kart.SetVelocity(kart.GetForward()*kartSpeed)
end

function onUse(use)
  --ボタンを押したら加速する
  if use == "Controller_Kart" then
    kartSpeed = kartSpeed + 1
  end
end

function onUngrab(target)
  --ボタンを離したら停止
  if target == "Controller_Kart" then
    kartSpeed = 0
  end
end

実際に動かすと以下のようになります。

補足

今回は移動の方法として速度を設定する方法を取りましたが、他にも以下のような方法があるかと思います
 ・毎フレーム位置を移動する(SetPositionで移動)
 ・物体に力を加える(addforceを使用)
それぞれ長所短所が在ると思うので内容に応じて使い分けるといいと思います。(正直私もよくわかってないです)
また、他にも方法があれば教えていただきたいです。

終わりに

いかがでしたでしょうか?
今回はカートという地面に接する物を作りましたが、もちろん空をとぶようなものを作成することも可能だと思います。
(もしかしたらそちらのほうがカートよりも楽かもしれません)
次回は花火を作成予定です。2回に分ける予定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?