让玩家磨下铁轨

时间:2015-11-17 17:04:59

标签: c# unity3d

我有一些麻烦,正确的计算如何使一个游戏磨损轨道 在我正在制作的游戏中,我让玩家用他的滑板碾压轨道,计算似乎是正确的。我正在使用y=mx+b作为形式来计算线的位置,我正在使用这段代码来计算斜率。公式中的m

slope = (pointB.position.y - pointA.position.y) / (pointB.position.x - pointA.position.x);

现在让玩家磨砺我有这个剧本:

Player.cs

private void Grind(RaycastHit2D[] hit)
{
    var grindObject = hit.Where(x => x.collider.tag == "grindable").FirstOrDefault();

    if (grindObject.collider != null)
    {
        grinding = true;
        var wantedTransform = transform.position;
        var grindScript = grindObject.collider.gameObject.GetComponent<Grind>();
        wantedTransform.y = grindScript.GetYPosition(gameObject.transform.position.x);
        if (transform.position.y > wantedTransform.y - 0.5f && transform.position.y < wantedTransform.y + 0.5f)
        {
            transform.position = wantedTransform;            grinding = true;
        }
        else
            grinding = false;
    }
    else
        grinding = false;
}

整个研磨脚本基本上就是这样:

public class Grind : MonoBehaviour {

    public Transform pointA;
    public Transform pointB;
    public float slope;

    public void Start()
    {
        slope = (pointB.position.y - pointA.position.y) / (pointB.position.x - pointA.position.x);

        Debug.Log(slope);
    }

    public float GetYPosition(float playerXPos)
    {
        return (slope * playerXPos) + (pointA.position.y - pointB.position.y);
    }
}

此脚本适用于first rail,但是如果我再拖动它或稍微旋转它,它将无法工作并使播放器float above the rail(两个图像都是播放器,动画尚未设置。)

有人知道发生了什么事以及我做错了什么吗?

0 个答案:

没有答案