相机碰撞统一
Camera collision in unity
我不知道如何检查碰撞,这是我的相机移动脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameracontroller : MonoBehaviour
{
public float movementSpeed;
public float movementTime;
public Vector3 newPosition;
// Start is called before the first frame update
void Start()
{
newPosition = transform.position;
}
// Update is called once per frame
void Update()
{
HandleMovementInput();
}
void HandleMovementInput()
{
if(Input.GetKey(KeyCode.W))
{
newPosition += (transform.forward * movementSpeed);
}
if(Input.GetKey(KeyCode.S))
{
newPosition += (transform.forward * -movementSpeed);
}
if(Input.GetKey(KeyCode.D))
{
newPosition += (transform.right * movementSpeed);
}
if(Input.GetKey(KeyCode.A))
{
newPosition += (transform.right * -movementSpeed);
}
transform.position = Vector3.Lerp(transform.position, newPosition, Time.deltaTime * movementTime);
}
}
我试过使用 void OnCollisionEnter(Collision collision)
但似乎没有用,我做错了什么吗?所有对象都有 colliders 我也尝试过使用刚体。我还是一个初级程序员,业余时间只写代码,以解释我的知识不足。
OnCollisionEnter 有点棘手,我相信当它与动态刚体(即非运动学)交互时,您会得到最好的结果。如果你想让它检查与墙壁的碰撞,在这种情况下,相机和墙壁都没有动态刚体,那么只需使用 OnTriggerEnter。
如果你正在尝试制作一个 RPG 风格的角色控制器并且相机碰撞代码是为了帮助防止相机穿过墙壁,那么我相信你可以通过光线投射来完成这项工作(通过从相机拍摄光线投射到播放器)而不是使用 OnTrigger。
我不知道如何检查碰撞,这是我的相机移动脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameracontroller : MonoBehaviour
{
public float movementSpeed;
public float movementTime;
public Vector3 newPosition;
// Start is called before the first frame update
void Start()
{
newPosition = transform.position;
}
// Update is called once per frame
void Update()
{
HandleMovementInput();
}
void HandleMovementInput()
{
if(Input.GetKey(KeyCode.W))
{
newPosition += (transform.forward * movementSpeed);
}
if(Input.GetKey(KeyCode.S))
{
newPosition += (transform.forward * -movementSpeed);
}
if(Input.GetKey(KeyCode.D))
{
newPosition += (transform.right * movementSpeed);
}
if(Input.GetKey(KeyCode.A))
{
newPosition += (transform.right * -movementSpeed);
}
transform.position = Vector3.Lerp(transform.position, newPosition, Time.deltaTime * movementTime);
}
}
我试过使用 void OnCollisionEnter(Collision collision)
但似乎没有用,我做错了什么吗?所有对象都有 colliders 我也尝试过使用刚体。我还是一个初级程序员,业余时间只写代码,以解释我的知识不足。
OnCollisionEnter 有点棘手,我相信当它与动态刚体(即非运动学)交互时,您会得到最好的结果。如果你想让它检查与墙壁的碰撞,在这种情况下,相机和墙壁都没有动态刚体,那么只需使用 OnTriggerEnter。
如果你正在尝试制作一个 RPG 风格的角色控制器并且相机碰撞代码是为了帮助防止相机穿过墙壁,那么我相信你可以通过光线投射来完成这项工作(通过从相机拍摄光线投射到播放器)而不是使用 OnTrigger。