前提・実現したいこと
UnityとC#でゲームを作ろうとしています。unityもC#もどちらも初心者です。
球体(Player)が接地(地面は現状PlaneではなくCubeを使用)している間のみジャンプさせようとしているのですが、空中でもジャンプが有効になってしまい、解決できません。
charactercontroller での記述方法をネット上で見つけていますが、なにぶん初心者なもので、記述方法の確認も含め、まずは下記の方法で解決したいと思っています。質問自体も初めての為拙く、お手数をおかけすると思いますが、どうぞよろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージは出ていませんが、どこにも触れていない時もさらにジャンプできてしまいます。
接地しており、ボタンを押した瞬間のみジャンプが有効になるようにしたいと考えています。
sphereRadius(実際のオブジェクトサイズ、spherecolliderのサイズ含む) = 0.5、speed = 200 で設定。
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed;
public float sphereRadius;
private Rigidbody rb;
void Start () { rb = GetComponent<Rigidbody>();
}
void FixedUpdate () { float moveHorizontal = Input.GetAxis ("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); float moveJump = Input.GetAxis("Jump"); if (Physics.CheckSphere(transform.position, sphereRadius)) { Vector3 movement = new Vector3(moveHorizontal, moveJump, moveVertical); rb.AddForce(movement * speed); } else { Vector3 movement = new Vector3(moveHorizontal, 0, moveVertical); rb.AddForce(movement * speed); } }
}
試したこと
rb.AddForce(movement * speed);
の位置を最初if文の後にし、moveJumpの値をそれぞれ指定していたのですが、エラーが出た(movementの記載がそれ以前にないという内容)ため分けてif内に内包する形にしています。
補足情報(FW/ツールのバージョンなど)
スクリプトはMicrosoft Visual Studioで作成
Unity :2019.3.9f1 personal
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/28 13:02