HTC Viveのコントローラーから火を発射する。
ねこますさんが、ねこまというキャラで、手から魔法を出していたので、とりあえず、私は手から炎を出させようと試みてみました。
左手から火の玉を出せるようになりました。 pic.twitter.com/Hjw2AVbnRc
— alaki paca@無知むち子 (@arabiiiiiiiiiii) 2018年5月27日
こういう風に書いてみました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VR;
public class fireGenerator : MonoBehaviour {
public SteamVR_TrackedObject trackedObject;
public GameObject fire;
public float speed;
void Start () {
}
void Update () {
var device = SteamVR_Controller.Input*1
{
var newfire = Instantiate (fire, device.transform.pos, Quaternion.identity);
Quaternion newQuaternion = new Quaternion();
newQuaternion.Set(device.transform.rot.x, device.transform.rot.y, device.transform.rot.z, device.transform.rot.w);
newfire.transform.rotation = newQuaternion;
newfire.GetComponent<Rigidbody>().AddForce(newfire.transform.forward*speed);
}
}
}
tracked objectにはコントローラーを、fireには生成したいものを、speedをいじって勢いを変えれるといった感じです。
newfire.GetComponent<Rigidbody>().AddForce("ここにコントローラーの方向ベクトルをいれる");
という方法でできないかと思っていたのですが、ちょっとその情報の取得の方法がわからなかったため、
生成する炎の向きを、Set(device.transform.rot.x, device.transform.rot.y, device.transform.rot.z, device.transform.rot.w);でコントローラーの向きに回転させた後、前方に力をかけるAddForceで飛ばしています。
もっと楽な方法ありそうですが。
とりあえず、この方法で飛ばせたのでメモ。
unity難しいのぉ
- 作者: 吉谷幹人,布留川英一,一條貴彰,西森丈俊,藤岡裕吾,室星亮太,車谷勇人,湊新平,土屋つかさ,黒河優介,中村優一,牙竜,コポコポ,かせ,hataken,monmoko,佐藤英一
- 出版社/メーカー: ボーンデジタル
- 発売日: 2018/05/01
- メディア: 大型本
- この商品を含むブログを見る
*1:int)trackedObject.index);
if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger