我正在使用 Unity 3d 中的一个 android 项目。我会在立方体的表面滚动球体。但是,当我单击播放按钮时,它会返回错误消息:
Assets/Scripts/Player.js(4,1): BCE0005: Unknown identifier: 'rigidBody'.
我的代码:
function Start () {
rigidBody.velocity.x=15;
}
刚体组件已添加到球体中。我想为产生的错误寻求解决方案。
我正在使用 Unity 3d 中的一个 android 项目。我会在立方体的表面滚动球体。但是,当我单击播放按钮时,它会返回错误消息:
Assets/Scripts/Player.js(4,1): BCE0005: Unknown identifier: 'rigidBody'.
我的代码:
function Start () {
rigidBody.velocity.x=15;
}
刚体组件已添加到球体中。我想为产生的错误寻求解决方案。
我不知道你是否在刚体上设置了一个 GetComponent 变量,但你可能需要去掉这个案例。
例如:
rigidBody.velocity.x=15;
将会:
rigidbody.velocity.x=15;
希望有帮助。
恢复,要按原样使用“rigidBody”,你必须先初始化它,就像其他人已经回答你的那样:
//link you rigidbody here:
public Rigidbody rigidBody;
function Start() {
//Or if the script is on the GameObject that has the rigidbody component:
//rigidBody = GetComponent<Rigidbody>();
rigidBody.velocity=new Vector2(15,0);
}
我想你忘了初始化刚体。您也不能像这样分配速度,因为rigidBody.velocity.x 是一个只读值。此代码可能会帮助您:
public Rigidbody rigidBody;
function Start(){
rigidBody.velocity=new Vector2(15,0);
}
您尚未初始化变量“rigidBody”。我不认为这是你的目标。如果您将脚本作为组件添加到球体中,则不必使用 getComponent。相反,它将只是:
“刚体.速度.x=15;”
您可能必须使用“new Vector3(x,y,z);” 传递新的速度。在这种情况下,代码将如下所示:
Rigidbody.velocity = new Vector3(15,Rigidbody.velocity.y, Rigidbody.velocity.z)*
无论如何,不要忘记你的对撞机。脊状物体不会自动与其他物体碰撞,但它们会受到重力的影响。一旦我终于弄明白了,我高兴地把我的角色扔到了 20 英尺的人行道上。如果您不那么挑剔,那么渲染血液非常容易。
对于 c#
您可能想先缓存它。
private Rigidbody rigidbodyCached;
//cache
void Start(){
rigidbodyCached = this.GetComponent<Rigidbody>();
}
//for velocity movements use FixedUpdate instead of Update
void FixedUpdate(){
rigidbodyCached.velocity = new Vector3(15,0,0);
}
如果您使用小于 5 的单位(我猜),您可以使用游戏对象的组件,如刚体或音频源,但在单位 5 及更高版本中,您需要在唤醒或启动功能中添加对它的引用,如此代码
private Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
// AND AFTER YOU ADDED THE REFERENCE FOR RIGIDBODY
// THEN CHANGE THE VELOCITY LIKE THIS
rb.velocity.x = 20;
}
您需要先在检查器中添加刚体组件,然后:
Rigidbody sphereRigidbody;
function Awake(){
sphereRigidbody = GetComponent<Rigidbody>();
sphereRigidbody.velocity = new Vector3(15,0,0);
}