C# 我需要我的相机能上下看
我最近开始学习Unity,所以我还是个新手,我需要我的相机能够上下观察,而不仅仅是在角色周围移动 我已经学习了很多教程,尝试修改了其中的一些,这是我一直在编写的代码,我不清楚为什么它不能上下查看C# 我需要我的相机能上下看,c#,unity3d,C#,Unity3d,我最近开始学习Unity,所以我还是个新手,我需要我的相机能够上下观察,而不仅仅是在角色周围移动 我已经学习了很多教程,尝试修改了其中的一些,这是我一直在编写的代码,我不清楚为什么它不能上下查看 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraControls : MonoBehaviour { public float RotationSpee
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
移动到了哪里。。。或者,转换
被移动了,但是我们不知道它与目标
有什么关系,所以也许您应该添加更多关于设置的细节。。。