最速怪談選手権

ボタンを押すと、キャラクターの真後ろにオブジェクトが出現するようにしたいのですが、

using UnityEngine;
using System.Collections;
[ExecuteInEditMode()]
public class GUIController : MonoBehaviour {
public CharacterController characterController;
public GameObject character;
public GameObject domino;
private Vector3 objPosition;
// Use this for initialization
void Start () {
objPosition = new Vector3 (0, 0, 0);
}

void OnGUI(){
if(GUI.Button(new Rect(600, Screen.height - 160, 120, 120), "おす")){
Debug.Log("ぼたん");
float x = characterController.transform.localPosition.x;
float y = characterController.transform.localPosition.y + 0.5f;
float z = characterController.transform.localPosition.z - 0.64f;
objPosition.Set(x, y, z);
Debug.Log (x+","+y+","+z);
GameObject domino_prefab = (GameObject)Instantiate(domino,objPosition, characterController.transform.rotation);
}
}
}

こうしてみたのですが、うまくキャラクターの真後ろにオブジェクトが出てきてくれません。
どなたか助けてください!

A 回答 (3件)

localPosition ではなく transform. TransformPoint ですね。

もしもキャラに追従させたいのであれば オブジェクトを出現させてから •••transform.parent = ネーム です。それから transform. localPosotionで座標を指定します。追従しない場合は上で追従する場合下です。transform.parent にオブジェクトネームを指定すると自動的に一つの固まりとしてシーン上に存在できます。
    • good
    • 0
この回答へのお礼

返事が遅れてしまい申し訳ありません。

無事、解決できました。
ありがとうございます!

お礼日時:2014/01/22 23:27

あ あと objPosition =newVector3(0,0.5,0.64);で良いですよ。

    • good
    • 0

書き足しですが。


localPosition はそのまま指定して良いです。自分の位置を(0,0,0)として考えるのでlocalPosition =(x,y,z); で良いです。
TransformPoint は、ワールド座標で指定したものがunity内部で変換してくれるので。
objPosition =gameobject.transform. Position +newVector3(x,y,z); となります。
x y z は任意の数値です。質問者さんの例で書けば (0,0.5,0.64)ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!