与射击轨迹相反,物体不断下降(Unity)

时间:2016-10-30 20:33:38

标签: c# unity3d 2d

大家好!我是Unity的新手,试图创建一个2D街机游戏,允许我的角色跳起一个轨迹运动,然后达到一些东西然后掉下来。我使用重力比例等于1而 move_speed 1000和 rest_speed 500但是一旦我击中空间,角色就会掉下来而不是去起来。

此外,walk.IsWalk是一个来自Walking类的int(只要我点击右箭头,将IsWalk设置为2)。我的预期结果是,只要我们同时按住空格右箭头键,角色就会按照弯曲的动作向上移动。我不知道这里发生了什么,有人可以指点我的方向吗?谢谢!

我的代码如下:

using UnityEngine;
using System.Collections;

public class Jumping : MonoBehaviour
{
    Rigidbody2D rb2D;
    Animator anim;
    Walking walk = new Walking();
    public float move_speed;
    public float rest_speed;

    void Start()
    {
        rb2D = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
    }

    void FixedUpdate()
    {
        //float xmove = Input.GetAxis("Horizontal");
        //float ymove = Input.GetAxis("Vertical");
        //var curr = new Vector2(xmove, ymove);

        if (Input.GetKey("space"))
        {
            anim.SetTrigger("JumpButtonPres");
            rb2D.gravityScale = 1;

            if (walk.isWalk == 2) 
            {
                rb2D.AddForce(rb2D.position * move_speed);
            }
            else if (walk.isWalk == 1) 
            {
                //rb2D.velocity += (Vector2.up * (-rb2D.velocity.x));
                rb2D.AddForce(-rb2D.position * move_speed);
            }
            else
            {                
                rb2D.AddForce(rb2D.position * rest_speed);
            }
        }
    }

}

enter image description here

rigidbody2D.AddForce

的部分代码

1 个答案:

答案 0 :(得分:0)

看起来你的问题是,每当你向你的刚体添加力时,你将它乘以它所在的位置,所以我猜你的角色被置于一个负y分量坐标,这是为什么 rb2D.position * rest_speed 会导致你的比赛下降。将其更改为 vector2.up * rest_speed ,您应该没问题。

希望我能够提供帮助。

  • 的Noé