错误CS1525 :意外的符号,', expecting
;'
错误CS1526 :类型
using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour {
public float xMax, xMin, zMax, zMin;
public float speed ;
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
GetComponent<Rigidbody>().velocity = movement* speed;
GetComponent<Rigidbody>().position = new Vector3 (
Mathf(GetComponent.<Rigidbody>().position.x, xMax, xMin),
0.0f,
Mathf(GetComponent.<Rigidbody>().position.z, zMax, zMin)
);
}
}
答案 0 :(得分:3)
这里有几个问题。首先是.
。 GetComponent<Rigidbody>();
有错误。电话应该只是
GetComponent()
请记住,任何Update()
电话都相当昂贵。所以多次调用它不仅是不必要的,而且可能真的很昂贵。特别是如果你在Rigidbody rigid_body = GetComponent<Rigidbody>(); //Perhaps once on Start()
内或在每帧调用的任何内容中执行此操作。如果您经常引用某个组件,请将其存储起来。
所以你最终会得到像
这样的东西Vector3 current_position = rigid_body.position;
rigid_body.position = new Vector3 ( Mathf(current_position.x, xMax, xMin),
0.0f,
Mathf(current_position.z, zMax, zMin)
);
然后在
Mathf.Clamp(current_position.x, xMax, xMin)
也许我错了,但我认为你真的试图压制你的位置价值?在这种情况下,呼叫将是
{{1}}
所以一定要看一下。
注意:
基于一些错误和评论,我认为你可能会看到文档,但是错误的语言。文档站点非常棒。
确保正确设置了文档的语言。你可以在右上角这样做。
这可以解释一些&#34;错误&#34;你做了,是一个容易陷入陷阱。
答案 1 :(得分:0)
你这家伙救了一天! 这是代码:D
using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour
{ public Rigidbody rb;
public float xMax,xMin,zMax,zMin;
public float velocity;
void Start() {
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.velocity = movement*velocity;
Vector3 current_position = rb.position;
rb.position = new Vector3 ( Mathf.Clamp(current_position.x,xMin,xMax),
0.0f,
Mathf.Clamp(current_position.z, zMin, zMax)
);
}
}