如何在Unity3d中使相机不穿过墙壁和物体



我正在unity中创建一个第三人称android 3d游戏。我已经设置了一个自由触摸外观脚本来移动玩家周围的相机视图。下面是代码。但跟随我的球员的摄像机正在穿过墙壁和球员与摄像机之间的物体。如果相机碰到物体,我希望它能自行调整(相机不是我的玩家的孩子(。我尝试过但没有成功的事情:

  1. 将箱式对撞机/刚体/材料应用于相机

  2. 制作相机的空游戏对象父对象,并将长方体碰撞器/刚体/材质应用于该游戏对象

  3. 使相机剪裁角度(近(<0.3这只适用于第一个人,但不适用于第三个人。

我想光线投射会有帮助,但我不知道如何实现它。任何建议都会有很大帮助!


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.Characters.ThirdPerson;
public class ThirdPersonInput : MonoBehaviour
{ 
public FixedJoystick LeftJoystick;
public FixedButton Button;
public FixedTouchField TouchField;
protected ThirdPersonUserControl Control;
protected float CameraAngle;
protected float CameraAngleSpeed = 0.2f;
// Start is called before the first frame update
void Start()
{
Control = GetComponent<ThirdPersonUserControl>();
}
// Update is called once per frame
void Update()
{
Control.m_Jump = Button.Pressed;
Control.Hinput = LeftJoystick.Direction.x;
Control.Vinput = LeftJoystick.Direction.y;
CameraAngle += TouchField.TouchDist.x * CameraAngleSpeed;
Camera.main.transform.position = transform.position + Quaternion.AngleAxis(CameraAngle, Vector3.up) * new Vector3(0, 3, -3);
Camera.main.transform.rotation = Quaternion.LookRotation(transform.position + Vector3.up * 2f - Camera.main.transform.position, Vector3.up);
}
} 

如果您尝试使用电影机,会非常方便。在电影机内部,有一个叫做电影机对撞机的部件。这将帮助您解决这个问题。此外,还有许多其他功能可供尝试。

最新更新