0 支持
106 閲覧

Unity 最新です

 いつもお世話になっております。

こちら(ttps://www.matatabi-ux.com/entry/2018/10/25/100000)のサイトを参考にさせていただいてひっぱり操作で矢印をいれようとしているのですが、
 この辺りがたぶん、LineRenderer操作あたりなんだろうとは思うのですがどうにもうまくいきません。
 お忙しいことと存じますがもしもよければご教授頂けると幸いです

/// <summary>
/// ドラッグ中イベントハンドラ
/// </summary>
public void OnMouseDrag()
{
    var position = this.GetMousePosition();
    [f:id:matatabi_ux:20181020141708g:plain]
    this.currentForce = position - this.dragStart;
    if (this.currentForce.magnitude > MaxMagnitude* MaxMagnitude)
    {
        this.currentForce *= MaxMagnitude / this.currentForce.magnitude;
    }

    this.direction.SetPosition(0, this.physics.position);
    this.direction.SetPosition(1, this.physics.position + this.currentForce);
}

/// <summary>
/// ドラッグ終了イベントハンドラ
/// </summary>
public void OnMouseUp()
{
    this.direction.enabled = false;
    this.Flip(this.currentForce * 6f);
}

調べたのですがどうにもうまくいかなくてまたいろいろ試してみます。教えてくださったかたありがとうございます

閉鎖(理由): なんとかできそうな感じになりました
初心者 (150 ポイント)
閉鎖 | 106 閲覧

回答 2

0 支持

ソースコードの途中にある [f:id:matatabi_ux:20181020141708g:plain] はコード以外の何かが紛れ込んでるだけっぽいので不要ですね。
消しても動かないでしょうか。

達人回答者 (5.7k ポイント)
0
ご教授ありがとうございます。

 消してみたんですが、
NullReferenceException: Object reference not set to an instance of an object
DigilabPinballController.Awake () (at Assets/Scenes/DigilabPinballController.cs:49)

 クリックしようとすると。

NullReferenceException: Object reference not set to an instance of an object
DigilabPinballController.GetMousePosition () (at Assets/Scenes/DigilabPinballController.cs:60)
DigilabPinballController.OnMouseDrag () (at Assets/Scenes/DigilabPinballController.cs:84)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)

とエラーが出てしまいます
0 支持

ソースコードの途中にある [f:id:matatabi_ux:20181020141708g:plain] を消し、記事の通りInspectorでの設定を行ったらひっぱってボールが飛んでいきました。なので、記事内容はソースコード内に不要な文字列が混入している以外は、有効なものだと思います。

`

public void Awake() {
    this.physics = this.GetComponent<Rigidbody>();
    this.mainCamera = Camera.main;
    this.mainCameraTransform = this.mainCamera.transform;
}

`

Awake()内でNullReferenceExceptionが発生しているとの事ですが、記事のコードから変更されてなえれば、Awake()は3行だけです。
この中でNullReferenceExceptionが発生する可能性があるのは this.mainCamera.transform;だけだと思います。
その原因はCamera.mainnullを返してるのではないかと思います。

Camera.mainは、シーン内にCameraコンポーネントがアタッチされたGame Object、要するにカメラが無ければnullを返します。

https://docs.unity3d.com/ja/current/ScriptReference/Camera-main.html
また、カメラがあっても、MainCameraタグが設定されている必要があります。
新規シーンに最初からあるカメラは、このタグが設定されているので、MainCameraタグが設定されてない場合というのもあまりなさそうではあるんですが、最初からあったMain Cameraを消してからメニューのGame Object > Cameraで追加した場合は、Main Cameraタグが付いていないので、1度Main Cameraを消したりしてないでしょうか?

一応、自分のPCに入ってる一番新しいバージョンのUnity 2019.4.11f1で試しましたが、恐らく2020.3だから動かないって事ではないと思います。

見習い回答者 (820 ポイント)
0
丁寧なご回答ありがとうございます。
やはり、自分の操作でおかしなところがあるようです。落ち着いてやり直してみます。
重ね重ねありがとうございます
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

123 質問

127 回答

137 コメント

153 ユーザー