ヒットを検出したときにオブジェクトがビューを遮らないように、オブジェクトの前にカメラを移動するプレーヤーとカメラの間にレイキャストを作成しました。C#Unity Raycastの問題、カメラが応答しない
デバッグテストでは、レイキャストが確実に機能していることがわかります。しかし、私のコードに関してコンソールから得られる唯一のメッセージは、変数targetMoveUseが割り当てられていますが、その値は決して使用されないということです。
私はこのチュートリアルをYouTubeのチュートリアルから学んだ後、チュートリアルのチュートリアルに従っていますが、チュートリアルと同じコードが表示されているにもかかわらず、私のためには機能しません。このチュートリアルは参考用です:https://www.youtube.com/watch?v=0nI0rX5fEY0
ここに私のコードです。どんな助けもありがとうございます。
Transform player;
Quaternion targetLook;
Vector3 targetMove;
public float rayHitMoveInFront = 0.1f;
Vector3 targetMoveUse;
public float smoothLook = 0.5f;
public float smoothMove = 0.5f;
Vector3 smoothMoveV;
public float distFromPlayer = 5;
public float heightFromPlayer = 3;
void Start() {
player = GameObject.FindWithTag ("Player").transform;
}
void Update() {
targetMove = player.position + (player.rotation * new Vector3 (0, heightFromPlayer, -distFromPlayer));
RaycastHit hit;
if (Physics.Raycast (player.position, targetMove - player.position, out hit, Vector3.Distance (player.position, targetMove)))
targetMoveUse = Vector3.Lerp (hit.point, player.position, rayHitMoveInFront);
else
targetMoveUse = targetMove;
//chapter 4 episode 3 part 1
//transform.position = player.position + (player.rotation * new Vector3 (0, heightFromPlayer, -distFromPlayer));
//transform.position = Vector3.Lerp (transform.position, targetMove, smoothMove * Time.deltaTime);
transform.position = Vector3.SmoothDamp (transform.position, targetMove, ref smoothMoveV, smoothMove);
targetLook = Quaternion.LookRotation (player.position - transform.position);
transform.rotation = Quaternion.Lerp (transform.rotation, targetLook, smoothLook * Time.deltaTime);
//chapter 4 episode 1
//transform.LookAt (player);
}
}
でtargetMove変数を置き換えますか?あなたはその部分を言及しなかった... – Programmer