Unity Space Shooter 教程:CS 1526,unity 5 中的 1525 错误
Unity Space Shooter tutorial : CS 1526 ,1525 error in unity 5
error CS1525: 意外的符号 ,', expecting
;'
error CS1526: 新表达式需要 () or [] after type
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)
);
}
}
这里有几个问题。首先是GetComponent.<Rigidbody>()
。 .
那里有错。调用应该只是
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)
所以一定要看看那个。
注:
根据一些错误和评论,我认为您可能正在查看文档,但使用了错误的语言。文档站点就是这样。
确保文档的语言设置正确。您可以在右上角这样做。
这可以解释您所做的一些 "mistakes" 并且很容易落入陷阱。
你拯救了这一天!
这是代码: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)
);
}
}
error CS1525: 意外的符号 ,', expecting
;'
error CS1526: 新表达式需要 () or [] after type
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)
);
}
}
这里有几个问题。首先是GetComponent.<Rigidbody>()
。 .
那里有错。调用应该只是
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)
所以一定要看看那个。
注:
根据一些错误和评论,我认为您可能正在查看文档,但使用了错误的语言。文档站点就是这样。
确保文档的语言设置正确。您可以在右上角这样做。
这可以解释您所做的一些 "mistakes" 并且很容易落入陷阱。
你拯救了这一天! 这是代码: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)
);
}
}