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,所以我还是个新手,我需要我的相机能够上下观察,而不仅仅是在角色周围移动 我已经学习了很多教程,尝试修改了其中的一些,这是我一直在编写的代码,我不清楚为什么它不能上下查看 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraControls : MonoBehaviour { public float RotationSpee

我最近开始学习Unity,所以我还是个新手,我需要我的相机能够上下观察,而不仅仅是在角色周围移动

我已经学习了很多教程,尝试修改了其中的一些,这是我一直在编写的代码,我不清楚为什么它不能上下查看

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

public class CameraControls : MonoBehaviour
{

public float RotationSpeed;
public Transform Target, Player;
float mouseX, mouseY;

public Transform Obstruction;
float zoomSpeed = 2f;

void Start()
{
    Obstruction = Target;
    Cursor.visible = false;
    Cursor.lockState = CursorLockMode.Locked;
}

void LateUpdate()
{
    CamControl();
    ViewObstructed();
}

void CamControl()
{
    mouseX += Input.GetAxis("Mouse X") * RotationSpeed;
    mouseY -= Input.GetAxis("Mouse Y") * RotationSpeed;
    mouseY = Mathf.Clamp(mouseY, -35, 60);

    transform.LookAt(Target);

    Target.rotation = Quaternion.Euler(mouseY, mouseX, 0);
    Player.rotation = Quaternion.Euler(0, mouseX, 0);

}


void ViewObstructed()
{
    RaycastHit hit;
    if(Physics.Raycast(transform.position, Target.position - transform.position, out hit, 4.5f))
    {
        if(hit.collider.gameObject.tag != "Player")
        {
            Obstruction = hit.transform;
            if (Obstruction.gameObject.GetComponent<MeshRenderer>())
            {
                Obstruction.gameObject.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
                if (Vector3.Distance(Obstruction.position, transform.position) >= 3f && Vector3.Distance(transform.position, Target.position) >= 1.5f)
                {
                    transform.Translate(Vector3.forward * zoomSpeed * Time.deltaTime);
                }
            }
        }
    }else
    {
        Obstruction.gameObject.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
        if (Vector3.Distance(transform.position, Target.position) < 4.5f)
        {
            transform.Translate(Vector3.back * zoomSpeed * Time.deltaTime);
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类摄影机控件:单行为
{
公众浮标轮换速度;
公众转化目标、参与者;
浮动鼠标,鼠标;
公共交通障碍;
浮动缩放速度=2f;
void Start()
{
障碍=目标;
Cursor.visible=false;
Cursor.lockState=CursorLockMode.Locked;
}
void LateUpdate()
{
凸轮控制();
视障碍();
}
无效控制()
{
mouseX+=Input.GetAxis(“鼠标X”)*旋转速度;
mouseY-=Input.GetAxis(“鼠标Y”)*旋转速度;
mouseY=金属夹(mouseY,-35,60);
变换。注视(目标);
Target.rotation=Quaternion.Euler(mouseY,mouseX,0);
Player.rotation=Quaternion.Euler(0,mouseX,0);
}
void viewbounded()
{
雷卡斯特击中;
if(物理光线投射(变换.位置,目标.位置-变换.位置,命中率,4.5f))
{
如果(hit.collider.gameObject.tag!=“玩家”)
{
障碍=击中。变换;
if(Obstruction.gameObject.GetComponent())
{
障碍物.gameObject.GetComponent().shadowCastingMode=UnityEngine.Rendering.shadowCastingMode.ShadowsOnly;
if(矢量3.距离(障碍物.位置,变换.位置)>=3f&&Vector3.距离(变换.位置,目标.位置)>=1.5f)
{
transform.Translate(Vector3.forward*zoomSpeed*Time.deltaTime);
}
}
}
}否则
{
障碍物.gameObject.GetComponent().shadowCastingMode=UnityEngine.Rendering.shadowCastingMode.On;
if(矢量3.距离(变换位置、目标位置)<4.5f)
{
transform.Translate(Vector3.back*zoomSpeed*Time.deltaTime);
}
}
}

}

奇怪的脚本。它似乎在移动其他东西,然后转动相机看其他东西。然而,它在移动它之前会这样做。而且
mouseX
等不需要是成员变量,不是吗;考虑到它们只在一种方法中使用。是的,通过代码理解它应该做什么有点困难。。。
目标
是否曾经以相机上下观察的方式移动过?因为我根本看不到
Target
移动到了哪里。。。或者,
转换
被移动了,但是我们不知道它与
目标
有什么关系,所以也许您应该添加更多关于设置的细节。。。