Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在无休止的跑步者游戏中随火箭移动相机_C#_Unity3d - Fatal编程技术网

C# 如何在无休止的跑步者游戏中随火箭移动相机

C# 如何在无休止的跑步者游戏中随火箭移动相机,c#,unity3d,C#,Unity3d,目前,我在unity中通过c#脚本更改主摄像头的位置时遇到问题。我正试图随着火箭改变相机的位置。因此,理想情况下,火箭应该在屏幕左侧有一点偏移。它应该在玩游戏的过程中跟随 这是我的相机脚本,当我按play时,它应该跟随unity内部的目标“TheRocket” using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraScript : MonoBehavio

目前,我在unity中通过c#脚本更改主摄像头的位置时遇到问题。我正试图随着火箭改变相机的位置。因此,理想情况下,火箭应该在屏幕左侧有一点偏移。它应该在玩游戏的过程中跟随

这是我的相机脚本,当我按play时,它应该跟随unity内部的目标“TheRocket”

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraScript : MonoBehaviour {

    Camera mainCam;
    public Transform target;
    public float distance = 15.0f;
    public float cameraY = 1.0f;

    // Update is called once per frame
    void Update () {
        Vector3 pos = transform.position;
        pos.z = target.position.z - distance;
        pos.x = target.position.x + 18;
    }

    void LateUpdate () {
        mainCam = Camera.main;
        Vector3 temp = mainCam.transform.position;
        temp.y = cameraY;
    }
}
我的控件类如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Controls : MonoBehaviour {

    public float speed = 8.0f;
    public float jumpspeed = 20.5f;
    public float gravity = 20.0f;
    Vector3 moveDirection = Vector3.zero;

    // Update is called once per frame
    void Update () {
        CharacterController controller = GetComponent<CharacterController>();
        if(controller.isGrounded) {
            moveDirection = new Vector3(0, 0, Input.GetAxis("Horizontal") + 3);
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
        }

        if(Input.GetButtonDown("Jump")) {
            moveDirection.y += jumpspeed;
        }else{
            if(Input.GetButtonDown("Jump")){
                moveDirection.y += jumpspeed;
            }
        }

        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类控制:单一行为{
公共浮子速度=8.0f;
公共浮子跳跃速度=20.5f;
公共浮子重力=20.0f;
Vector3移动方向=Vector3.0;
//每帧调用一次更新
无效更新(){
CharacterController=GetComponent();
if(controller.isground){
moveDirection=新矢量3(0,0,Input.GetAxis(“水平”)+3);
moveDirection=transform.TransformDirection(moveDirection);
移动方向*=速度;
}
if(Input.GetButtonDown(“跳转”)){
移动方向。y+=跳跃速度;
}否则{
if(Input.GetButtonDown(“跳转”)){
移动方向。y+=跳跃速度;
}
}
moveDirection.y-=重力*时间增量;
控制器移动(移动方向*时间增量);
}
}
我真的不知道我做错了什么。我将本教程用作参考:

希望有人能发现问题隐藏在哪里

截图

场景

场景播放(应跟随火箭并被放大

主摄像头检查器视图

TheRocket


根据这些信息很难判断。但我的第一个猜测是,您没有将摄像头连接到火箭上,也没有适当地分配变量


在Unity中,您可以将相机拖动到火箭上,使相机成为火箭的子对象。

您没有在脚本中的任何位置设置相机位置,您只创建了相机位置的副本,并将其放置到
pos
变量中。然后需要将相机位置设置为与您的变量相等

这应该是您所需要的全部:

void LateUpdate()
{
    Vector3 pos = target.transform.position;
    pos.z = target.position.z - distance;
    pos.x = target.position.x + 18;
    Camera.main.transform.position = pos;
}

以下是要遵循的步骤:

1-将火箭拖到场景中

2-创建一个摄影机并将其拖动为火箭的子对象

3-将相机放置在你想面对火箭的任何位置(如屏幕截图中的位置)

4-将火箭保存为预制件,并在每次要发射火箭时实例化它,相机将连接到火箭


上周我在一个火箭发射器上做了这件事,火箭发射后,一个摄像头一直跟踪它直到它爆炸

我先描述一下你遇到的实际问题…@Robii当然。我添加了一些Boilet你需要给出正确答案吗?我已经将火箭连接到unity inspector中的目标变量上。解释一下问题是。相机根本不移动吗?你经历了什么行为?可能包括unity层次结构的屏幕截图。还要确保你已将脚本附加到适当的对象。请参阅更新的问题。它不移动。它应该与火箭一起移动。你还必须在func中进行类似的更正谢谢你,巴德。更新功能有什么错误?你可以删除更新中的东西。我的意思是你不需要更新和最新更新。你所需要的就是我上面的东西