物体有时通过飞机

时间:2015-11-15 20:29:11

标签: c# unity3d

我正在学习使用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));

    }
}

3 个答案:

答案 0 :(得分:1)

首先,确保所有墙壁都安装了对撞机并且没有放错地方。

第二,当球快速移动时会发生吗?如果是,这是固定物理时间戳太高的常见Unity问题。您可以尝试减少此数字或将此脚本应用于球:http://wiki.unity3d.com/index.php?title=DontGoThroughThings

答案 1 :(得分:0)

此问题通常是由直接移动/旋转物理对象引起的。旋转时,碰撞器顶点会移动,在某些时候你不可避免地会将最近的顶点旋转到平面上。

相反,您应该对该对象施加力。它将提供更加逼真的运动。有一个tutorial on adding力量可以让你开始。

答案 2 :(得分:0)

在我的情况下,这不是代码问题,而是Unity的组件。

Ball有他的刚体,但忘记了迷宫。请记住为2个元素添加Component刚体,并且迷宫不会影响物理并落入空隙,不要选择" gravity"选项卡并选择"是动力的"选项卡,不会影响重力,但会发生碰撞。