我仍然是Unity和编码的新手,所以记住这一点! 我也在Unity论坛上问了这个问题,但人们告诉我代码应该编译得很好而且它们都处于亏损状态,所以我希望能在这里找到答案!
我试图让我的步行动画尽快播放我称之为速度的参数> 0.1
我一直收到这个错误,经过一些谷歌搜索后我还是没弄明白。
Assets/Scripts/PlayerMovement.cs(28,26): error CS1061: Type `Animator' does not contain a definition for `SetFloat' and no extension method `SetFloat' of type `Animator' could be found (are you missing a using directive or an assembly reference?)
知道可能出现什么问题吗?
这是我的剧本:
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
public float speed;
public float floatDown;
public Boundary boundary;
Animator animator;
[System.Serializable]
public class Boundary{
public float xMin, xMax, zMin, zMax, yMin, yMax;
}
// Use this for initialization.
void Start () {
gameObject.tag = "Player";
animator = GetComponent<Animator> ();
}
// Update is called once per frame.
void Update () {
//Basic left, right, up, down, movement.
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis ("Jump");
animator.SetFloat ("Speed", moveHorizontal);
Vector3 movement = new Vector3 (moveHorizontal, moveVertical, 0.0f);
GetComponent<Rigidbody>().velocity = movement * speed;
//Clamping so Bubbleboy doesnt exit screen.
GetComponent<Rigidbody>().position = new Vector3
(
Mathf.Clamp (GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax),
Mathf.Clamp (GetComponent<Rigidbody>().position.y, boundary.yMin, boundary.yMax),
Mathf.Clamp (GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax)
);
//Using relativeForce to simulate floating down.
if (Input.GetKey (KeyCode.S)) {
GetComponent<Rigidbody>().AddRelativeForce (0, floatDown, 0);
}
}
}
答案 0 :(得分:1)
确保你没有一个名为&#34; Animator&#34;的脚本。如果你有相同名称的项目脚本,Unity会更喜欢你的脚本而不是Unity的动画师类。
答案 1 :(得分:1)
你走的是参考图片:http://i.imgur.com/CUtND9a.png
您在2个脚本上有错误。根据我团结合作的经验,这会导致视觉工作室/单声道开发导致“假错误”。
给出的错误很可能是因为其中一个脚本包含(非相关)错误。
我之所以这么想,是因为我已经在我的统一思想中编译了你的代码,没有出现任何错误。按照你提供的图像,并且当你的ide出错时知道Unity表现得很糟糕,很有可能就是这种情况。
修改强>
哦,差点忘了;
如果是这种情况,您可以在键入IDE时轻松注意到它。应该搞乱自动完成(IntelliSense)并提供默认方法。