我在我的播放器和相机之间创建了一个光线广播,当它检测到一个命中时,将相机移动到对象的前面,以便该对象不会阻挡视图。C#Unity Raycast问题,相机没有响应
调试测试显示raycast肯定正在工作。然而,我从控制台得到的关于我的代码的唯一消息是变量targetMoveUse被赋值,但其值永远不会被使用。
我从youtube上的教程中学习了这段代码,并且将它跟在一个tee上,但尽管看起来和教程有相同的代码,但它并不适合我。本教程仅供参考: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