///////////ここのコードです。3Dアクションゲームなのですが、プレイヤーが左に向いたり前に向いたりしてプレイヤー自体が色んな方向に向いてもプレイヤーが正面の向きにRayを飛ばし"Rayの線の長さを指定したい"です
用途は、Slope.transform.positionとはプレイヤーの足元に子のオブジェクト(Slope)を設定してそこからRayを飛ばして現在坂道に足元が居るかどうかを判定してY軸の増加量を計算しています。そのためにプレイヤーの足元からプレイヤーの正面方向に向かってRayを飛ばしたいのです。
質問内容は、つまりtransform.forwardでは長さが1の正面に居る場合は(0,0,1)の長さが来てしまうため長すぎです、自分は0.3,04といった長さを指定したいです。
※Player操作スクリプトです。
void Slope_Mng()//坂道を上る時 { Vector3 range = new Vector3(0, -0.3f, -0.7f); // Debug.DrawLine(Slope.transform.position, Slope.transform.position + transform.forward + new Vector3(0, -0.3f, 0.3f), Color.blue); Debug.DrawLine(Slope.transform.position, Slope.transform.position + (transform.forward), Color.blue); //Debug.DrawLine(Slope.transform.position, Slope.transform.position + new Vector3(0,-1,1) , Color.blue); Debug.Log("forward" + transform.forward); //Transform hit; RaycastHit hit; if(move.x != 0 || move.z != 0){ //Debug.DrawLine(Slope.transform.position,Slope.transform.position + new Vector3(0,-1f,1f),Color.blue); if(Physics.Linecast(Slope.transform.position, transform.position + new Vector3(0, -0.3f, 0.3f),out hit,LayerMask.GetMask("Slope")) == true) { Debug.Log("Slope "); if(Vector3.Angle(transform.up, hit.normal) <= 90 && Vector3.Angle(transform.up, hit.normal) >= 0) { // velocity = new Vector3(0f, (Quaternion.FromToRotation(Vector3.up, stepHit.normal) * transform.forward * walkSpeed).y, 0f) + transform.forward * walkSpeed; v = new Vector3(0f, (Quaternion.FromToRotation(Vector3.up, hit.normal) * transform.forward * ani.speed).y, 0f) + transform.forward * ani.speed; Debug.Log("登れる坂です。"); }else{ v = Vector3.zero; } } Debug.Log("y: " + v); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/02/10 05:57
2020/02/10 06:08
退会済みユーザー
2020/02/10 06:26
2020/02/11 01:27 編集