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")
移动我的精灵角色,但我只想让他向前移动。
答案 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"));
我怀疑前者可能是你所追求的,但你应该考虑你想要的负值,并调整到那个。