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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

645閲覧

DirectionとVector3の変換

Fou8A

総合スコア4

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/06/12 09:44

編集2021/06/12 09:48

前提・実現したいこと

UnityのWaypointとRigidbodyを用いた、カービィ64やロックマンX系のような3Dスクロール移動

発生している問題・エラーメッセージ

waypointを用いた動きの参考として
Unityで3D横スクロールの挙動を考える
こちらのサイトにあったwaypoint生成スクリプトをお借りすることにしました
勿論このまま使えば正常に作動するのですが、個人的にtransform.position用いた移動は大きいことが気になるので、Rigidbodyを用いた移動に変更したいです。
しかし、自己解釈でVector3やrb.movepotisionを用いた移動に変更しようとしてもその場でガクガクと動くだけでうまく前進できなかったり、

'LineTrace.Direction' から 'UnityEngine.Vector3' へ変換することはできません

と表示されそもそもコードとして成立しなかったり等でうまく動きませんでした
DirectionをVector3に適応、あるいは他の方法の方法によってtransform.positionを回避することはできないのでしょうか…?

該当のソースコード

(自前のものではなく上記サイト様に掲載されていた元々のコード
using UnityEngine;
using LineTrace;

public class Move : MonoBehaviour
{
public DirectionController2d controller;
public float speed;

void Update () { if (Input.GetKey(KeyCode.LeftArrow)) { // 向きを設定する controller.direction = Direction.back; transform.position += controller.forward*speed*Time.deltaTime; } else if (Input.GetKey(KeyCode.RightArrow)) { // 向きを設定する controller.direction = Direction.front; transform.position += controller.forward * speed * Time.deltaTime; } }

}

試したこと

上記コード内でのtransform.possitionを用いないコード書き換え(いずれも失敗)

補足情報(FW/ツールのバージョンなど)

unityのverは2019

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Directionはそのサイトの作者が作成したもので、Unityの標準機能ではありません。
しかも、以下のようにenum型であり、言ってしまえばただの連番(frontが0、backが1)です。

C#

1public enum Direction 2{ 3 front, 4 back 5}

当然ながら、Vector3型とは互換性はありません。
コードを見る限り、controller.forwardがその方向へのVector3だと思いますので、それを使えばよいはずですが、どうでしょうか。

(というか、「どのようにコードを書いたら、このようになった」というのが重要なので、サイトのコードではなく、自作したコードを記載すべきだと思いますが)

投稿2021/06/12 10:01

fiveHundred

総合スコア9774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fou8A

2021/06/12 11:02

ありがとうございます!おかげさまで無事に rb.MovePosition(transform.position+controller.forward*speed*Time.deltaTime); という形での解決をすることが出来ました! 次からは自分のコードを張るようにいたします。申し訳ありませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問