基本上,我使用虚拟操纵杆使对象整体移动,但是我无法使其立即以100%的速度移动,它只有在手柄到达操纵杆轮廓时才平滑并达到最高速度。如何删除平滑?
我尝试了一些从教程中学到的东西,例如以下代码,但由于我是初学者,所以想不出很多可以帮助您的东西。
public float runSpeed = 5f;
public Joystick joystick;
Rigidbody2D rigidbody2d;
// Start is called before the first frame update
void Start()
{
rigidbody2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
float horizontal = joystick.Horizontal;
float vertical = joystick.Vertical;
Vector2 move = new Vector2(horizontal, vertical);
Vector2 position = rigidbody2d.position;
if (joystick.Horizontal || joystick.Vertical >= .2f)
{
position = position + move * runSpeed * Time.deltaTime;
}
else if (joystick.Horizontal || joystick.Vertical <= -.2f)
{
position = position + move * -runSpeed * Time.deltaTime;
}
else
{
position = position + move * 0f * Time.deltaTime;
}
rigidbody2d.MovePosition(position);
错误CS0019运算符'||'不能应用于“ float”和“ bool” Assembly-CSharp类型的操作数
答案 0 :(得分:1)
更改此:
if (joystick.Horizontal || joystick.Vertical >= .2f)
{
...
}
收件人:
if (joystick.Horizontal >= value || joystick.Vertical >= value)
{
...
}
答案 1 :(得分:0)
似乎您想在改变方向时消除惯性。改变方向时将速度设为零。感觉你动作很快。
但是在现实世界中,运动遵循牛顿的第一定律。因此,每次您尝试改变方向时。它受牛顿第一定律影响的最后速度的影响。所以动作会慢慢改变。