【发布时间】:2016-10-30 20:33:38
【问题描述】:
大家!我是 Unity 的新手,并尝试通过让我的角色以轨迹运动跳起来到达某物然后跌倒来创建一个 2D 街机游戏。我使用 gravity scale 等于 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 的部分代码
【问题讨论】:
-
"walk.IsWalk 是来自于步行类的布尔值"。这不是真的。您无法将 bool 与 int 进行比较。如果该语句为真,则您的代码不应编译。顺便说一句,编辑您的问题并将您的实际代码放入其中,而不是您的代码图片。
-
对不起,我说错了,我将walk.IsWalk设置为Int,并在这里与int进行比较