6348


皆さんはじめまして。この間から Unity をはじめたばっかりの初心者であり、C 言語しか勉強しておらず Javascript や C#
は触ったことがないので悪戦苦闘しながらスクリプトを書いております。  
やりたいこととしては、シーン上に指定時間後に照明を当て、また指定時間後に照明を消すということをしたいと思い、出したい場所に空(から)のゲームオブジェクトを配置し、そこにスクリプトでプレハブ（照明）からインスタンスを作成し、指定時間後に
Destory メソッドで消せばいいやと思ったのですが、これがうまくいきません。どうしたらいいのでしょうか。教えてくれると嬉しいです。  
エラーは、

> Can't destroy Transform component of 'Spotlight(Clone)'. If you want to
> destroy the game object, please call 'Destroy' on the game object instead.
> Destroying the transform component is not allowed.

と出ます。ソースコードは以下の通りです。

[code]

    #pragma strict
    
    var People_Light : Transform;
    
    function Start()
    {
      //4.8秒後にライトをつけるようにする
      Invoke("Light_On", 4.8);
    }
    
    function Light_On()
    {
      var a =  Instantiate(People_Light,transform.position,transform.rotation);
      //指定時間後に消去
      GameObject.Destroy(a,6.5);
    }
    
[/code]


CC BY-SA 3.0
2015-02-11T18:45:38.917
6340
2015-02-17T07:00:02.983
2015-02-11T21:37:50.787
3906
question
javascript unity3d
Unityでプレハブ(照明)の消し方がわかりません


エラーメッセージの通りですよ。  
Destroyの引数に指定するのは破壊したい対象（GameObject）ですが、SpotlightではなくSpotlightのTransformコンポーネントが渡されているのでエラーとなっています。  
原因はこの辺かと。

> var People_Light : Transform;


CC BY-SA 3.0
2015-02-11T19:55:54.570
6341
2015-02-11T23:49:39.060
2015-02-11T23:49:39.060
5005
5005
6340
answer


`var a = Instantiate(People_Light,transform.position,transform.rotation) as
GameObject;`

にするとエラーは消える思います。  
現在うまくいっていない理由に関しては、ぽぽたんさんの回答を確認してみると理解出来ると思います。

306_sanさんのやりたいこと

  1. 指定時間後にライトを当てる
  2. 指定時間後に照明を消す

であれば予めシーン上にライトを配置

[code]

    // ライトオブジェクトをアタッチしておく
    var People_Light : GameObject;
    
    function Start()
    {
        //ライトを消しておく
        Light_Off();
    
        //4.8秒後にライトをつけるようにする
        Invoke("Light_On", 4.8);
    }
    
    function Light_On()
    {
        //ライトをつける
        People_Light.SetActive(true);
    }
    
    function Light_Off()
    {
        //ライトを消す
        People_Light.SetActive(false);
    }
    
[/code]

のような形で実現出来ると思いました。上記コードは、テストしていないので間違えていたらごめんなさいm(_ _)m  
ライトのOn,OffをさせるだけであればDestoryよりもSetActiveをtrue,falseにするほうが処理も軽いのでいいかもしれません。


CC BY-SA 3.0
2015-02-12T02:41:26.637
6348
2015-02-13T02:59:39.080
2015-02-13T02:59:39.080
3944
2367
6340
answer