大家好!我是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);
}
}
}
}
rigidbody2D.AddForce
的部分代码答案 0 :(得分:0)
看起来你的问题是,每当你向你的刚体添加力时,你将它乘以它所在的位置,所以我猜你的角色被置于一个负y分量坐标,这是为什么 rb2D.position * rest_speed 会导致你的比赛下降。将其更改为 vector2.up * rest_speed ,您应该没问题。
希望我能够提供帮助。