示例#1
0
    public void UpdateStep()
    {
        RaycastHit2D hit = Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y), new Vector2(velocity.x, velocity.y), (velocity.magnitude * Time.fixedDeltaTime));

        if (hit.collider != null)
        {
            IHittable hitObject = hit.collider.GetComponent <IHittable>();
            if (hitObject != null)
            {
                transform.position  = transform.position + velocity.normalized * hit.distance;
                transform.position += new Vector3(hit.normal.x, hit.normal.y, 0f) * 0.05f;
                velocity            = hitObject.GetHitVelocity(hit, velocity);

                hitObject.UpdateOnHit();
            }
        }
        else
        {
            transform.position += velocity * Time.fixedDeltaTime;
        }
    }