現在、Unity3Dでキャラクターの動きに取り組んでいます。私はどうにかして彼をマウスカーソルに対して相対的に移動させました。傾斜制限を45°に設定しました。これにより、キャラクターはより高い角度で山を登ることができなくなります。しかし、彼はまだそれらをジャンプすることができます。
傾斜が高すぎる場所でジャンプしたときに、どうすれば彼を再び滑らせることができますか?
前もって感謝します。
編集:基本的な動きのコードスニペット。UnityEngineを使用します。System.Collectionsを使用します。
public class BasicMovement : MonoBehaviour {
private float speed;
private float jumpSpeed;
private float gravity;
private float slopeLimit;
private Vector3 moveDirection = Vector3.zero;
void Start()
{
PlayerSettings settings = GetComponent<PlayerSettings>();
speed = settings.GetSpeed();
jumpSpeed = settings.GetJumpSpeed();
gravity = settings.GetGravity();
slopeLimit = settings.GetSlopeLimit();
}
void Update() {
CharacterController controller = GetComponent<CharacterController>();
controller.slopeLimit = slopeLimit;
if (controller.isGrounded) {
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump")) {
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
}
詳細情報が必要です:物理を使用していますか?これらの斜面は地形システムなどを使用していますか?キャラクターをコントロールしているコンポーネントは何ですか?これは2Dまたは3Dゲームですか?
—
Kylotan
プレイヤーがジャンプしようとしたとき、またはジャンプを完了してスロープに当たったときにスライドするということですか?
—
tyjkenn
@tyjkennつまり、彼がジャンプを完了したときです。スーパーマリオ64のように、地面に着地し、この地面の角度が高すぎる場合は、角度がslopeLimitと等しくなるまで下にスライドする必要があります。
—
ケイナベル2012年
@Kylotanよく、私はUnityの初心者です。だから、私はできる限り良い答えを出すようにしています。キャラクターコントローラーでキャラクターを作成しました-リジッドボディはありません。キーが押されたときに彼を動かし、カーソルに対して相対的に歩くようにしました。地形を作成し、ボタンを使用して(ああ、これは愚かに聞こえるはずです)、山を作成しました。これは、WarCraft IIIのような外観とカメラスタイルの3Dゲームになります。
—
ケイナベル2012年