我正在学习使用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));
}
}
答案 0 :(得分:1)
首先,确保所有墙壁都安装了对撞机并且没有放错地方。
第二,当球快速移动时会发生吗?如果是,这是固定物理时间戳太高的常见Unity问题。您可以尝试减少此数字或将此脚本应用于球:http://wiki.unity3d.com/index.php?title=DontGoThroughThings
答案 1 :(得分:0)
此问题通常是由直接移动/旋转物理对象引起的。旋转时,碰撞器顶点会移动,在某些时候你不可避免地会将最近的顶点旋转到平面上。
相反,您应该对该对象施加力。它将提供更加逼真的运动。有一个tutorial on adding力量可以让你开始。
答案 2 :(得分:0)
在我的情况下,这不是代码问题,而是Unity的组件。
Ball有他的刚体,但忘记了迷宫。请记住为2个元素添加Component刚体,并且迷宫不会影响物理并落入空隙,不要选择" gravity"选项卡并选择"是动力的"选项卡,不会影响重力,但会发生碰撞。