小编Din*_*ovr的帖子

从Random.Range()中排除值?

如果您Random.Range()用于生成值,是否有任何方法可以排除范围内的某些值(例如:选择1到20之间的数字,但不是6到8之间的数字)?

c# random unity-game-engine

17
推荐指数
3
解决办法
6253
查看次数

低帧速率下的慢速碰撞检测

我的碰撞检测遇到了一个奇怪的问题.我正在使用Update方法移动播放器(我不想使用FixedUpdate,因为这会产生不希望的怪异动作).固定的时间步长设置为默认值0.02(我尝试使用时间设置播放,但这也不起作用).我将两个物体的刚体的碰撞检测设置为"连续动态".此外,我将目标帧速率设置为300,并且没有改变任何内容......

当帧速率较低或设备本身较慢时,碰撞检测并不总是有效.玩家可以很容易地穿过它应该碰撞的物体,尽管有时它不会碰撞.

请告诉我我可以做些什么来解决这个问题,因为我发布了一个游戏,许多用户正在报告这个(严重的)错误.感谢您的支持.

这是应该发生的事情:

在此输入图像描述

这是实际发生的事情:

在此输入图像描述

(正如你所看到的,立方体从墙上走到另一边)

当用户释放鼠标按钮时我移动播放器:

脚本1:

public Script2 Jumper;
public float TimeToJump;

public void Update()
{
        if (Input.GetMouseButtonUp(0)) 
    {
            StartCoroutine (Delay (1f/50f)); //Don't mind the time.
    }
}

IEnumerator Delay(float waitTime) 
{
    yield return new WaitForSeconds (waitTime);
    if (Jumper != null) 
    {
        Jumper.SetVelocityToJump (gameObject, TimeToJump);
    }
}
Run Code Online (Sandbox Code Playgroud)

脚本2附加到播放器(立方体):

public class Script2 : MonoBehaviour {

    GameObject target;
    private float timeToJump;
    public bool isJumping = false;

    public void SetVelocityToJump(GameObject goToJumpTo, float timeToJump)
    {
        StartCoroutine(jumpAndFollow(goToJumpTo, timeToJump));
        this.timeToJump = timeToJump;
        this.target = …
Run Code Online (Sandbox Code Playgroud)

c# collision-detection unity-game-engine

8
推荐指数
1
解决办法
812
查看次数