前提・実現したいこと
現在UnityのThirdPersonControllerを使った3Dアクションゲームを製作しています。プレイヤーが乗ったらAddForce()で上斜め前に打ち上げるジャンプパネルを作ったのですが、これがどうも度々判定されないようです。大体はコード通りに動くのでなぜたまに反応しない時があるのかがわかりません。どなたかアドバイスお願いします!
該当のソースコード
using UnityStandardAssets.Characters.ThirdPerson;
using UnityEngine;
public class JumpPanelScript : MonoBehaviour
{
GameObject player;
Rigidbody playerrigid;
ThirdPersonCharacter thirdPersonCharacter;
[SerializeField]
private float JumpUpLevel = 15f;
void Start()
{
player = GameObject.FindWithTag("Player");
playerrigid = player.GetComponent<Rigidbody>();
thirdPersonCharacter = player.GetComponent<ThirdPersonCharacter>();
}
private void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "Player")
{
playerrigid.AddForce(collision.transform.TransformDirection(Vector3.forward) * 5, ForceMode.Impulse);
playerrigid.velocity = collision.transform.TransformDirection(Vector3.up) * JumpUpLevel;
thirdPersonCharacter.m_IsGrounded = false;
}
}
試したこと
・コライダーをトリガーにしたり、BoxColiderにして判定を厚くしても改善されませんでした。
・CollisionDetectionをContinuousやContinuos Dynamic, Continuous Speculativeなどすべて試してみましたが改善されませんでした。
・OnCollisionEnterおよびOnCollisionStayの両方で試しましたが変化は見られませんでした。
・AddForceの第二引数を全てのForceModeで試してみましたが飛距離が変わるだけで判定に変化はあまりありませんでした。
・
補足情報
ゲームの機能としてプレイヤーの速度を速くする機能があるのですが特に判定されない場合がこの時によくあります。これが原因なのでしょうか
ThirdPersonControllerに自作のPlayerControllerスクリプトをアタッチし、Quicker ValueをThirdPersonCharacterのMoveSpeedMultiplierとAnimSpeedMultiplierにかけています。

回答2件
あなたの回答
tips
プレビュー