Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3d滑动跳跃响应性不强_C#_Android_Unity3d - Fatal编程技术网

C# Unity3d滑动跳跃响应性不强

C# Unity3d滑动跳跃响应性不强,c#,android,unity3d,C#,Android,Unity3d,我正在尝试使用unity3D构建android游戏。这是我写的角色控制器脚本。向上滑动部分在代码的末尾,我已经对它的位置进行了评论 float speed = 11.0f; public float jumpForce = 0.005f; public float FingerInitialPosition = 0f; public float FingerMovedPosition = 0f; public float startTouchPosition = 0f; public flo

我正在尝试使用unity3D构建android游戏。这是我写的角色控制器脚本。向上滑动部分在代码的末尾,我已经对它的位置进行了评论

float speed = 11.0f;
public float jumpForce = 0.005f;


public float FingerInitialPosition = 0f;
public float FingerMovedPosition = 0f;
public float startTouchPosition = 0f;
public float endTouchPosition = 0f;

public Rigidbody2D rb;
public Vector3 jump;
public int jumpCount;


Vector3 moveDir = Vector3.zero;

// Start is called before the first frame update
void Start()
{
    rb = GetComponent<Rigidbody2D>();
    jump = new Vector3(0.0f, 1f, 0.0f);

}


void OnCollisionEnter2D(Collision2D col)
{

    Debug.Log("Collided");
    jumpCount=0;            

}

void FixedUpdate()
{

    Debug.Log(jumpCount);
    if(transform.position.y < -14) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }


    foreach (Touch FingerTouch in Input.touches)
    {
        if (FingerTouch.position.x < Screen.width / 2)
        {
            if (FingerTouch.phase == TouchPhase.Began)
            {
                FingerInitialPosition = FingerTouch.position.x;
            }
            else if (FingerTouch.phase == TouchPhase.Moved)
            {
                FingerMovedPosition = FingerTouch.position.x;

                if (FingerMovedPosition > FingerInitialPosition)
                {
                     float hval = rb.velocity.x;
                     hval += 19f;
                     hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                     rb.velocity = new Vector2(hval, rb.velocity.y);



                }
                else if (FingerMovedPosition < FingerInitialPosition)
                {
                    float hval = rb.velocity.x;
                    hval -= 19f;
                    hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                    rb.velocity = new Vector2(hval, rb.velocity.y);
                }
            }
            else if (FingerTouch.phase == TouchPhase.Ended)
            {
                FingerInitialPosition = 0f;
                FingerMovedPosition = 0f;

            }
            else //NEW PART!//
            {
                FingerMovedPosition = FingerTouch.position.x;
                if (FingerMovedPosition > FingerInitialPosition)
                {
                    float hval = rb.velocity.x;
                    hval += 19f;
                    hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                    rb.velocity = new Vector2(hval, rb.velocity.y);
                }
                else if (FingerMovedPosition < FingerInitialPosition)
                {
                    float hval = rb.velocity.x;
                    hval -= 19f;
                    hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                    rb.velocity = new Vector2(hval, rb.velocity.y);

                }
            }
        }

        // The part I think needs fixing
        // The swipe Up part where I make the player jump

        if (FingerTouch.position.x > Screen.width / 2)
        {
            for (int i = 0; i < Input.touchCount; i++)
            {
                Touch touch = Input.GetTouch(i);
                if (touch.phase == TouchPhase.Began)
                {
                    startTouchPosition = touch.position.y;
                }
                else if (touch.phase == TouchPhase.Ended)
                {
                    endTouchPosition = touch.position.y;
                    if (endTouchPosition > startTouchPosition)
                    {
                        if (jumpCount<1) {
                            rb.AddForce(jump * jumpForce, ForceMode2D.Impulse);
                            jumpCount += 1;
                        }

                    }
                }
            }
        }



    }



}
浮动速度=11.0f;
公共浮子跳线力=0.005f;
公共浮点数初始位置=0f;
公共浮动FingerMovedPosition=0f;
公共浮动开始位置=0f;
公共浮点数endTouchPosition=0f;
公共刚体2d rb;
公共矢量3跳跃;
公共整数跳数;
Vector3 moveDir=Vector3.0;
//在第一帧更新之前调用Start
void Start()
{
rb=GetComponent();
跳跃=新矢量3(0.0f、1f、0.0f);
}
空心OnCollisionInter2D(碰撞2D列)
{
Log(“冲突”);
跳数=0;
}
void FixedUpdate()
{
Debug.Log(jumpCount);
if(transform.position.y<-14){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);}
foreach(在Input.Touchs中触摸FingerTouch)
{
如果(FingerTouch.position.x<屏幕宽度/2)
{
if(FingerTouch.phase==TouchPhase.Start)
{
FingerInitialPosition=FingerTouch.position.x;
}
否则如果(FingerTouch.phase==TouchPhase.Moved)
{
FingerMovedPosition=FingerTouch.position.x;
如果(FingerMovedPosition>FingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPositionFingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPositionScreen.width/2)
{
对于(int i=0;istartTouchPosition)
{

如果(jumpCount没有嵌套循环,请继续使用
FingerTouch

此外,在手指被取下时,不要进行比较(这可能会导致延迟),只要通过检查
FingerTouch.deltaPosition.y
,在看到手指向上移动时激活它即可:

void FixedUpdate()
{

    Debug.Log(jumpCount);
    if(transform.position.y < -14) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }


    foreach (Touch FingerTouch in Input.touches)
    {
        if (FingerTouch.position.x < Screen.width / 2)
        {
            if (FingerTouch.phase == TouchPhase.Began)
            {
                FingerInitialPosition = FingerTouch.position.x;
            }
            else if (FingerTouch.phase == TouchPhase.Moved)
            {
                FingerMovedPosition = FingerTouch.position.x;

                if (FingerMovedPosition > FingerInitialPosition)
                {
                     float hval = rb.velocity.x;
                     hval += 19f;
                     hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                     rb.velocity = new Vector2(hval, rb.velocity.y);



                }
                else if (FingerMovedPosition < FingerInitialPosition)
                {
                    float hval = rb.velocity.x;
                    hval -= 19f;
                    hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                    rb.velocity = new Vector2(hval, rb.velocity.y);
                }
            }
            else if (FingerTouch.phase == TouchPhase.Ended)
            {
                FingerInitialPosition = 0f;
                FingerMovedPosition = 0f;

            }
            else //NEW PART!//
            {
                FingerMovedPosition = FingerTouch.position.x;
                if (FingerMovedPosition > FingerInitialPosition)
                {
                    float hval = rb.velocity.x;
                    hval += 19f;
                    hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                    rb.velocity = new Vector2(hval, rb.velocity.y);
                }
                else if (FingerMovedPosition < FingerInitialPosition)
                {
                    float hval = rb.velocity.x;
                    hval -= 19f;
                    hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
                    rb.velocity = new Vector2(hval, rb.velocity.y);

                }
            }
        }

        else if (FingerTouch.position.x > Screen.width / 2)
        {
            if (FingerTouch.deltaPosition.y > 0) {
                if (jumpCount<1) {
                    rb.AddForce(jump * jumpForce, ForceMode2D.Impulse);
                    jumpCount += 1;
                }
            }
        }

    }
}
void FixedUpdate()
{
Debug.Log(jumpCount);
if(transform.position.y<-14){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);}
foreach(在Input.Touchs中触摸FingerTouch)
{
如果(FingerTouch.position.x<屏幕宽度/2)
{
if(FingerTouch.phase==TouchPhase.Start)
{
FingerInitialPosition=FingerTouch.position.x;
}
否则如果(FingerTouch.phase==TouchPhase.Moved)
{
FingerMovedPosition=FingerTouch.position.x;
如果(FingerMovedPosition>FingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPositionFingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPosition