2016-05-15 5 views
1

ヒットを検出したときにオブジェクトがビューを遮らないように、オブジェクトの前にカメラを移動するプレーヤーとカメラの間にレイキャストを作成しました。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); 
} 

}

+0

でtargetMove変数を置き換えますか?あなたはその部分を言及しなかった... – Programmer

答えて

1

チェックこの行を、

transform.position = Vector3.SmoothDamp (transform.position, targetMove, ref smoothMoveV, smoothMove); 

は、だから何を働いていないtargetMoveUse

transform.position = Vector3.SmoothDamp (transform.position, targetMoveUse, ref smoothMoveV, smoothMove); 
+0

これはそれをやった!ありがとうございました! –

+0

ようこそ、このポストを正しい答えとしてチェックしてください。 – CloudSL