贝塞尔运动和圆形

贝塞尔运动

//起始点,插值点,目标点
private Vector3 Bezier(Vector3 p0,Vector3 p1,Vector3 p2,float t)
    {
        Vector3 p0p1 = (1 - t) * p0 + t * p1;
        Vector3 p1p2 = (1 - t) * p1 + t * p2;
        Vector3 temp = (1 - t) * p0p1 + t * p1p2;
        return temp;
    }
_moveTimer += 0.4f * Time.deltaTime;
arrow.transform.localPosition = Bezier(_v1+_bOffset1, _v2+_bOffset2, _v3+_bOffset3, _moveTimer);

圆形运动

private Vector3 centerPos;    //你围绕那个点 就用谁的角度
    private float radius;     //物理离 centerPos的距离

    private void CricleSpawn(int num)
    {
        Invoke("ArrowReadyToStart",0.5f);
        for (int i = 0; i <num; i++)
        {
            float angel =(300 / num * i)+220;
            //先解决你物体的位置的问题
            // x = 原点x + 半径 * 邻边除以斜边的比例,   邻边除以斜边的比例 = cos(弧度) , 弧度 = 角度 *3.14f / 180f;   
            float x = centerPos.x + radius * Mathf.Cos(angel * 3.14f / 180f);
            float y = centerPos.y + radius * Mathf.Sin(angel * 3.14f / 180f);
            // 生成一个圆
            GameObject go = Instantiate(cellPfb, transform);
            go.transform.localScale = Vector3.zero;
            go.transform.DOScale(0.8f, 0.5f);
            //设置物体的位置Vector3三个参数分别代表x,y,z的坐标数  
            go.transform.localPosition = new Vector2(x, y);
           _cellList.Add(go);
        }
    }

你可能感兴趣的:(游戏开发,c#)