大家好,我的玩家正在石头上行走,穿过石头。名为Champ的玩家有一个盒子对撞机,石头有一个网格对撞机。而且玩家有刚体。我尝试了我发现的每一件事,但没有任何帮助我解决我的问题。
移动播放器。cs脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovePlayer : MonoBehaviour
{
Rigidbody rb;
public float speed = 10f;
private Vector3 moveDirection;
public float rotationSpeed = 0.05f;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")).normalized;
}
void FixedUpdate()
{
rb.MovePosition(rb.position + transform.TransformDirection(moveDirection * speed * Time.deltaTime));
RotatePlayer();
}
void RotatePlayer()
{
if (moveDirection != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(moveDirection.normalized), rotationSpeed);
}
transform.Translate(moveDirection * speed * Time.deltaTime, Space.World);
}
}
检验员中的播放器设置
检查器中的石头设置
场景预览
谢谢你们的帮助,伙计们!:)
测试了你的代码,碰撞似乎在我这边工作得很好。
通过将脚本添加到带盒碰撞器的游戏对象中并使用立方体创建一个小级别来测试它。还做了一面墙,我修改成使用网格碰撞器而不是盒子碰撞器。玩家与场景中的物体正常碰撞。
你应该从项目设置中仔细检查你的图层碰撞矩阵