我有一个游戏,其中地图/背景由预制件组成。我的播放器和预制件都具有刚体和对撞机。它们都没有被触发检查,并且预制件将碰撞检测设置为连续动态。玩家的碰撞检测设置为连续。每个预制件都具有网状对撞机,而预制件的各个壁都具有箱式对撞机(均未设置为触发器)。我一直尝试使用Unity Remote 5在手机上对其进行测试,每次移动播放器时,它都会穿过墙壁。如果有人对如何防止我的玩家穿过墙壁有任何建议,我将不胜感激!
我的动作脚本是:
public class Movement : MonoBehaviour
{
private Touch touch;
private float speedModifier;
void Start()
{
speedModifier = 0.01f;
}
void Update()
{
if(Input.touchCount > 0)
{
touch = Input.GetTouch(0);
if(touch.phase == TouchPhase.Moved)
{ transform.position = new Vector3(transform.position.x + touch.deltaPosition.x * speedModifier,
transform.position.y,
transform.position.z + touch.deltaPosition.y * speedModifier);
}
}
}
}
答案 0 :(得分:0)
这确实有助于查看您的运动脚本,但是听起来好像您是在通过将 transform.position 或使用无需更改isKinematic设置为true 的stiffbody.MovePosition()来操纵玩家的。 >。 documentation说;
如果刚体的isKinematic设置为false,则其作用类似于transform.position = newPosition并将对象传送到新位置(而不是执行平滑过渡)。
此行为将忽略冲突。同样,您不需要场景中每个GameObject都具有刚体。播放器上的1个刚体足以使其与其他物体碰撞。
答案 1 :(得分:0)
根据我从您的问题中得到的信息,当您玩游戏时,如果玩家撞墙,它就会进入室内;因此问题可能出在墙的质量上。如果您必须在墙上添加一个刚体,那么您需要在墙上增加更多的质量,还可以编辑盒子碰撞器的边框并使它们合理地宽一些,否则,如果您在墙上不需要刚体,则只需保留盒子即可对撞机,它将很好。希望这个答案对您有帮助,如果您可以使用一些图片来解释更多情况,将会更好。
答案 2 :(得分:0)
使用刚体位置或施加力会导致刚体夹住其他对撞机。我建议更改而不是直接更改其刚度。速度。