現在2Dのアクションゲームを作っているのですが、Player(自機)がどうしても壁にめりこんでしまいます・・・。
PlayerにはRigidboby2Dを付けており、Playerと壁の両方にはBox Collider 2Dを付けてあります。
試行錯誤した結果、以下のプログラムで壁へのめりこみはとりあえず直り、ピタッと止めることは出来ましたが、これではy軸も移動の対象になっており、あらかじめPlayerに入れてあるジャンプのプログラムが作動しなくなります・・・。
つまり、このプログラムからy軸を対象にしている部分を消し、x軸だけをこのプログラムで動かせばいいという結論に至りました。用はPlayerが上下に動かないようにしたいのです。
どうにかしてこのプログラムで左右にだけPlayerを移動させたいです。
が、自分がy軸だけを消そうとするとなぜかx軸も消えてしまうようで、左右にすら動かなくなってしまいます・・・。
自分の力ではどのサイトを見ても、どう試行錯誤してもこの問題が解決出来ませんでした。
どなたか分かる方いましたら教えていただけると幸いです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
public Rigidbody2D rb2d;
public float SlowSpeed = 3f;
public float NormalSpeed = 5f;
void Start() { } void Update() { float x = Input.GetAxisRaw("Horizontal"); float y = Input.GetAxisRaw("Vertical"); Vector2 dir = new Vector2(x, y).normalized; if (Input.GetKey(KeyCode.LeftShift)) { GetComponent<Rigidbody2D>().velocity = dir * SlowSpeed; } else { GetComponent<Rigidbody2D>().velocity = dir * NormalSpeed; } }
}
回答2件
あなたの回答
tips
プレビュー