###前提・実現したいこと
以下のイメージ画像のような2D用のベルトコンベアを作成したいと考えております。
用途はランゲームです。(イメージ(例):マリオとかに出てくるベルトコンベア)
まず最初にSurfaceEffector2Dを試してみましたが、動かないオブジェクト(アイテムや障害物)はベルトに乗せると
運べることを確認しましたが、自動で右に移動するキャラクターが乗ると反応がありませんでした。
(velocityで移動処理しているため?)
3Dのベルトコンベアを参考に調べていましたが、いまいちわからなかったので質問することにしました。
よろしくお願いします。
※自分が理解していないため、
ソースは参考サイトに載っているものをそのまま貼り付けた形になります。
キャラクターが乗ると停止し、ジャンプすると横にスライドする
思っているものと違う挙動になってしまいます。
###該当のソース
//ベルトコンベアのスピード [SerializeField] private float speed = 1f; private void OnCollisionStay2D(Collision2D col) { var body = col.gameObject.GetComponent<Rigidbody2D>(); if(body != null) { Vector3 add = transform.forward * speed * Time.deltaTime; body.MovePosition(col.transform.position + add); } } ``` ###キャラクターの移動処理
Rigidbody2D rd2D;
float moveSpeed;
float JumpPower = 450f;
const float SPEED = 6f;
void FixedUpdate()
{
switch (playerState)
{
---処理(省略)----
case PLAYER_STATE.MOVE://移動中
moveSpeed = SPEED;
break;
}
//キャラの移動
rd2D.velocity = new Vector2(moveSpeed, rd2D.velocity.y);
---処理(省略)----
//ジャンプ力分上に加速
if (isJumpFlg)
{
rd2D.AddForce(Vector2.up * JumpPower);
isJumpFlg = false;
}
}
###補足情報(言語/FW/ツール等のバージョンなど) Unity 2019.1.6f1 言語:C# 参考サイト:www.urablog.xyz/entry/2016/07/08/235728 キャラクターにはPhysics Material 2Dがついている状態です ↓↓↓↓改良後↓↓↓ ![イメージ説明](f883ba69f5f38da3b1a6b4cdd8ef4ad2.gif)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/15 15:13 編集
2019/07/15 22:03
2019/07/17 08:06 編集