物体有时穿过平面
本文关键字:平面 | 更新日期: 2023-09-27 18:22:04
我正在学习使用Unity,我在课程中看到的一个小游戏遇到了问题。是迷宫游戏和球的地方,你必须移动迷宫才能把球带到球门。问题是,球有时会穿过迷宫的平面,落入虚空。
using UnityEngine;
using System.Collections;
public class controllaberinto : MonoBehaviour
{
public enum TGameState
{
PLAYING=0,
END_GAME
}
public float RotationalSpeed;
public GameObject Ball;
Vector3 StartPosition;
public TGameState GameState;
void Start ()
{
StartPosition = Ball.transform.position;
}
void Update ()
{
switch (GameState)
{
case TGameState.PLAYING:
UpdatePlayingGameState();
break;
}
}
void UpdatePlayingGameState()
{
if(Input.GetKey(KeyCode.A))
transform.Rotate(new Vector3(0.0f, 0.0f, RotationalSpeed*Time.deltaTime));
if(Input.GetKey(KeyCode.D))
transform.Rotate(new Vector3(0.0f, 0.0f, -RotationalSpeed*Time.deltaTime));
if(Input.GetKey(KeyCode.W))
transform.Rotate(new Vector3(RotationalSpeed*Time.deltaTime, 0.0f, 0.0f));
if(Input.GetKey(KeyCode.S))
transform.Rotate(new Vector3(-RotationalSpeed*Time.deltaTime, 0.0f, 0.0f));
}
}
首先,确保所有墙壁都连接了对撞机,并且没有放错地方。
第二,当球移动得很快时,会发生这种情况吗?如果是的话,这就是常见的Unity问题,其中固定的物理时间戳太高了。您可以尝试减少这个数字或将这个脚本应用于ball:http://wiki.unity3d.com/index.php?title=DontGoThroughThings
这个问题通常是由直接移动/旋转物理对象引起的。旋转时,碰撞器顶点会移动,在某个点上,不可避免地会旋转平面中最近的顶点。
相反,应该对对象应用力。它将提供一个更现实的运动。有一个关于添加力的教程应该会让你开始。
在我的情况下,这不是代码的问题,而是Unity的组件的问题。
鲍尔有他的刚体,但忘了放迷宫。记住为2个元素添加组件刚体,迷宫不会影响物理和落入空隙,不要选择"重力"选项卡,选择"是动力学"选项卡,不会影响重力,但碰撞会。