Unity5でゲームオブジェクト実践3

マウスでゲームオブジェクトを動かします。

Unity5でゲームオブジェクト実践3

<<Unity5でゲームオブジェクト実践2にもどる
  1. マウスボタンをチェックする
  2. マウスフラグのチェックを代入する
  3. マウスクリック中だけCubeが回転するスクリプト 復習

メニューにもどる。

マウスボタンをチェックする

Input.GetMouseButton(0) 左ボタン
Input.GetMouseButton(1) 右ボタン
Input.GetMouseButton(2) 中央ボタン


分岐
if (Input.GetMouseButton(0)) {~~~}//if (Input.GetMouseButton(0))左ボタンがtrueであれば・・
if (Input.GetMouseButton(2)) {~~~}
if (Input.GetMouseButton(3)) {~~~}

分岐はこのようにして書けますが、単に他のスクリプトの為にチェックのみ行いたい場合もあります。
そこで下記のような手順を利用できます。

マウスフラグのチェックを(代入)する

指定のマウスボタンが押されているかチェックする
マウスボタンの状態のチェック 
bool 変数 =Input.GetMouseButton(番号);


指定のマウスボタンが離されたときのチェックする
マウスボタンの状態のチェック 
bool 変数 =Input.GetMouseButton(番号);

マウスクリック中だけCubeが回転するスクリプト Rotate/Input.GetMouseButton

Input.GetMouseButton(0)

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    
    Vector3 vec;
    // Use this for initialization
    void Start () {
        vec = new Vector3(0.1f, 01f, 0.1f);
    }
    
    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButton(0)) {
            transform.Rotate(vec);
        }
    }
}

マウスポインタの位置を示す「mousePosition」

Vector3 変数=Input.mousePosition;
これだけ。
ただし、そのままシーン内の位置としては扱えない。
シーンに配置されているオブジェクト類というのは、シーンに用意されている絶対座標(固定されていて変化しない座標)を使って
位置が設定されている
そして 実際にゲームを実行している表示(表示位置)というのは、シーンに配置されたカメラを当してみた景色になっています。

画面上にあるオブジェクトをクリックした場合、画面上のクリック位置と
シーンに配置されているオブジェクト類の実際に配置されている位置は
同じ値ではない



ichi_camera.jpg

もっとわかるやすくいうと
画面上のマウスの位置と
シーン上の絶対位置は おなじでない


フォーカスした位置のクリックは、フォーカスが変わると変わる。
フォーカスの概念を無しにして、置いてある物体の位置は変化しない。3dマップ、3d地図

次に画面上のクリックはガラス上のクリックのように2次元の扱いです。奥行Zはないです。


カメラから見た座標を絶対座標に変換する

画面上の位置をシーンの絶対位置に変換する
Vector3 変数=<<Camera>>.ScreenToWorldPoint(float値);

ScreenToWorldPoint 画面上の位置をシーンの絶対位置に変換する

画面上のクリックは2次元の扱いです。奥行Zは無い為、引数に奥行を指定して補います。

メインカメラとCamera.main

Camera.main.mousePosition メインカメラから見た画面上の位置を変換

クリックした位置にCubeを動かすプロジェクト

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class myScript : MonoBehaviour {
    //Vector3 pos;
    //Vector3 newpos;

    void Start () {
        
    }
    
    
    void Update () {
        if (Input.GetMouseButtonDown(0)){
            Vector3 pos = Input.mousePosition;
            pos.z = 3.0f;
            Vector3 newpos=Camera.main.ScreenToWorldPoint(pos);
            transform.position = newpos;
        }
           
    }
}

ms_idou.JPG カメラの位置も関係して、「あの地平線の向こうに!!」という事はまだできないが、
純粋に目の前を瞬時に移動するようになった。今日はここまで。

  • 最終更新:2016-03-08 01:44:10

このWIKIを編集するにはパスワード入力が必要です

認証パスワード