【Unity】抛物线公式

先上公式


        public static Vector3 Parabola(Vector3 start, Vector3 end, float totalTime, float curTime)
        {
            //var g = 9.8f;
            var g = 50f;

            var halfTime = totalTime / 2f;
            var vec = (end - start) / totalTime;
            var initVelocity = vec + new Vector3(0, g * halfTime, 0);
            var acc = new Vector3(0, -g, 0);
            var curPos = start + initVelocity * curTime + 1f / 2f * acc * curTime * curTime;

            return curPos;
        }

使用方法,这里我用的是协程


            float totalTime = 0.5f;
            float startTime = Time.time;
            while (true)
            {
                if (Time.time > startTime + totalTime)
                {
                    break;
                }

                var curTime = Time.time - startTime;
                goGrenade.transform.position = MathTool.Parabola(startPos, targetPos, totalTime, curTime);

                yield return null;
            }

你可能感兴趣的:(【Unity】抛物线公式)