質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • C#

    7400questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    4176questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1348questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

unityでRPGを作っています その3

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,841

haruru

score 6

こんばんわ。
haruruです。

今日も深夜のunity・・躓きの連続・・

まず、昨日のシーンジャンプはうまくいきました。(半分)
ですが、sceneを越えた後に特定の座標に移動してほしいので

using UnityEngine;
using System.Collections;

public class mapJump : MonoBehaviour {
    public string nextScene;
    public float x = 0.0f;
    public float y = 0.0f;
    public float z = 0.0f;

    void OnTriggerEnter()
    { Application.LoadLevel(nextScene);

    transform.Position = new Vector3(x, y, z);
        }
        
    }

という感じで書いたら、これを割り当ててる城が飛んでいきます。。
(そりゃそうか・・)
飛んでほしいのは自機なのに・・

そして、自機を破棄しない処理
using UnityEngine;
using System.Collections;

public class Parmanent : MonoBehaviour {
    public GameObject pc01;
    
    void Awake(){
        DontDestroyOnLoad (pc01);
}
}

これもうまく行きません。コンパイルエラーしている、と怒られます・・

解決策、ご教授いただければ幸いです。
本日も何卒宜しくお願いいたします。。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

void OnTriggerEnter(Collider other)
{
other.transform.position = new Vector3(x,y,z);
}

transform.positionでは自分(この場合は城)です。
引数でぶつかった相手を拾えます。
ぶつかった相手を飛ばしましょう。

下のスクリプトは、ちょっとすぐには分かりませんがまさかnullではないですよね?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/16 10:14

    おはようございます。
    前々回に引き続き、回答いただきありがとうございます!
    作業が深夜になりますので、そこで試してみて、また返答させていただきます。
    宜しくお願いいたします。

    キャンセル

  • 2015/06/17 01:23

    作業している途中で、何かが起きて今まで書いたスクリプトがすべて使用できなくなっています。。

    no monobehaviour scripts in the file or their names do not match the file name

    というエラーが出ています。
    新しくc#をcreateしても、それにもエラーが出ています。。

    なので、実験が出来ずにいます・・

    キャンセル

  • 2015/06/17 01:32

    昨日のバックアップから復元しました・・
    ちょっと確認遅れるかもしれません!
    寝る前に何とかしたいですが・・

    キャンセル

  • 2015/06/17 02:24

    お答え参考にさせて頂きました。
    で、ですね

    public class mapJump : MonoBehaviour {
    //次のシーン名
    public string nextScene;
    //移動前の座標
    public Vector3 startPosition;

    //トリガーに触れた、別のrigidbodyを
    private void OnTriggerEnter(Collider other)
    {
    //触れたgameobjectを破棄しません
    DontDestroyOnLoad (other.gameObject);
    //指定の座標に移動します。
    other.transform.position = new Vector3 (x, y, z);
    //シーンをジャンプします。
    Application.LoadLevel(nextScene);

    }
    }

    のように書きました・・が、
    other.transform.position = new Vector3 (x, y, z);
    を記述するとエラーがでます。
    どうしてでしょうか・・?

    キャンセル

  • 2015/06/17 08:27

    エラーというのは、どういったエラーでしょうか?
    IDE側のエラーの内容が欲しいです。

    とりあえずエラーになりそうな事はx,y,zは座標の意味で省略しましたので、x,y,zのままではエラーになります...数値で指定してください。ぐらいでしょうか?

    MasaaliIrieさんの答えにあるように、フィールドで座標を指定する、などをしてください。
    float x = 0.0f;
    float y = 0.0f;
    float z = 0.0f;

    publicになってますが城から強制移動される位置情報を他がもつ必要は無いと思いますのでprivateにするのが普通かと。

    そもそもVector3のpositionの値を変更しているだけですのでエラーになると言われてもそれぐらいしか思い浮かばないです...

    キャンセル

  • 2015/06/19 00:58

    このようにしました。

    using UnityEngine;
    using System.Collections;

    public class MapJump : MonoBehaviour {
    public string nextScene;
    public Vector3 startPosition;
    public GameObject camera_move;

    private void OnTriggerEnter(Collider other)
    {
    other.transform.position = startPosition;
    DontDestroyOnLoad (other.gameObject);
    DontDestroyOnLoad (camera_move);
    Application.LoadLevel(nextScene);

    }
    }

    しかしながら、カメラデータがシーンを跨げず、どうしようかと思っていますが。。
    とにかく、指定のシーンの指定の座標に飛ぶことは出来ました!

    エラーの報告については、ちょっと無知なので次回からは詳細をあげれるようにします。。

    キャンセル

0

public class mapJump : MonoBehaviour { 
    public string nextScene; 
    public float x = 0.0f; 
    public float y = 0.0f; 
    public float z = 0.0f; 
    public GameObject pc01; 

    void OnTriggerEnter() 
    { Application.LoadLevel(nextScene); 

pc01.transform.Position =new Vector3(x, y, z); 
//    transform.Position = new Vector3(x, y, z); 
        } 
    } 

ではないですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/17 01:24

    回答ありがとうございます。
    現在
    no monobehaviour scripts in the file or their names do not match the file name
    というエラーが全スクリプトに出ており、実験できません・・

    ですが提案されたものですと、scene移動の際に移動値が破棄されてしまうと思うのですが、どうでしょうか・・?

    キャンセル

  • 2015/06/17 01:32

    エラー直ったので、確認進めます・・

    キャンセル

  • 2015/06/17 09:38

    public GameObject pc01; これが全シーンで生きているなら
    pc01.setPost( x, y, z );
    で残しておけばOKじゃないですか?

    キャンセル

  • 2015/06/19 01:00

    mrmthdtmさんの方のコメントに、今回どうしたか、記載いたしました!
    毎回回答くださりありがとうございます。
    今回はこのように致しました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7400questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    4176questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1348questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。