无法将类型`bool'隐式转换为`float'

时间:2014-08-27 01:52:48

标签: input unity3d

using UnityEngine;
using System.Collections;

public class RightMovement : MonoBehaviour {

    public float maxSpeed = 10f;
    bool facingRight = true;

    void Start() {}

    void FixedUpdate() {

        float move = (Input.GetAxis("Horizontal") > 0); 
        rigidbody2D.velocity = new Vector2 (move * maxSpeed, rigidbody2D.velocity.y);
    }
}

这是我不断得到的完整错误:

  

Assets / Scripts / RightMovement.cs(14,23):错误CS0029:不能   隐式转换类型bool' to float'

我想用Input.GetAxis("Horizontal")移动我的精灵角色,但我只想让他向前移动。

1 个答案:

答案 0 :(得分:2)

Input.GetAxis("Horizontal") > 0是一个布尔值(true / false),如果GetAxis的返回值大于零,则该值为true,否则为false。这就是为什么它抱怨试图将一个布尔值变成一个浮点变量。

听起来你想强迫它只是非负面的,在这种情况下有两种可能的可能性。


首先要确保将负值转换为零,这将涉及如下内容:

float move = Input.GetAxis("Horizontal");
if (move < 0) move = 0;

或者,如果你喜欢单行的那种:

float move = Math.Max(0, Input.GetAxis("Horizontal"));

第二种方法是将负面转化为等效的正面,例如:

float move = Input.GetAxis("Horizontal");
if (move < 0) move = -move;

或者,再一次,单行:

float move = Math.Abs(Input.GetAxis("Horizontal"));

我怀疑前者可能是你所追求的,但你应该考虑你想要的负值,并调整到那个。