让敌人在长方形平台上走动,就像在Metroid

时间:2018-01-02 04:05:12

标签: c#

我是Unity的新手,所以这可能是一个愚蠢的问题,但我有几天试图解决这个问题。我有一个敌人从一个平台的一边走到另一边。我正在使用Raycasting检查下方是否有地面并转向其他方向。

我想要的是让敌人在平台上行走(就像银河战士中的敌人一样)。我将敌人的引力设​​置为0,所以它不会掉下来,但我不知道如何让它旋转并继续在平台上行走。我知道它可以通过光线投射完成,但我不知道如何做到这一点。

如果有人能帮助我解决我遗漏的代码,我将非常感激。提前谢谢!

public class BlobController : MonoBehaviour {

    private Rigidbody2D myRigidBody;
    public float moveSpeed;
    public LayerMask groundMask;
    float myWidth;

    // Use this for initialization
    void Start () 
    {
        myRigidBody = GetComponent<Rigidbody2D>();
        myWidth = GetComponent<SpriteRenderer> ().bounds.extents.x;
    }

    // Update is called once per frame
    void Update () 
    {

    }

    void FixedUpdate()
    {
        //Check to see if there's ground in front before moving forward

        Vector2 lineCasPos = transform.position - transform.right * myWidth;
        Debug.DrawRay (lineCasPos, Vector2.down,Color.red);
        bool isGrounded = Physics2D.Raycast (lineCasPos, Vector2.down, 2, groundMask);

        //If there's no ground, turn around

        if (!isGrounded) 
        {
            Vector3 currRot = transform.eulerAngles;
            currRot.y += 180;
            transform.eulerAngles = currRot;
        }

        //Always move forward

        Vector2 myVel = myRigidBody.velocity;
        myVel.x = -transform.right.x * moveSpeed;
        myRigidBody.velocity = myVel;
    }
}

0 个答案:

没有答案