物体有时穿过平面

本文关键字:平面 | 更新日期: 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个元素添加组件刚体,迷宫不会影响物理和落入空隙,不要选择"重力"选项卡,选择"是动力学"选项卡,不会影响重力,但碰撞会。