获取身边的邻居
public List<Collider> GetNeighbours()
{
/*
Physics.OverlapBox:Box范围内的
Physics.OverlapCapsule:Capsule范围内的
Physics.OverlapSphere:Sphere范围内的
*/
List<Collider> neighbours = new List<Collider>();
float radius = 3f;
Collider[] cols = Physics.OverlapSphere(transform.position, radius);
foreach (Collider col in cols)
{
if (col != null && col.gameObject != this.gameObject)
{
neighbours.Add(col);
}
}
return neighbours;
}
相机跟随
public class CameraFollowPlayer : MonoBehaviour
{
public Transform playerT;
private Vector3 offset;
private float smoothing = 3; // 平滑度
private void Start()
{
offset = transform.position - playerT.position;
}
private void LateUpdate()
{
// 计算目标位置,这种方式,如果玩家旋转,能看到玩家的脸、后脑勺。。。
// Vector3 targetP = playerT.position + offset;
// TransformDirection,从local转换为world
// 玩家旋转时,也只会看到后脑勺,相机会绕着玩家,和玩家一起转
Vector3 targetP = playerT.position + playerT.TransformDirection(offset);
// 差值运算,平滑过渡位置
transform.position = Vector3.Lerp(transform.position, targetP, Time.deltaTime * smoothing);
// 望向玩家
transform.LookAt(playerT.position);
}
}