我正在尝试编写一个非常简单的FPS游戏,并且我达到了需要创建拾取武器系统的程度。为了完成该系统,我陷入了需要AddComponent("Rigidbody")
和AddComponent("BoxCollider")
的点,Unity3D抛出了这个错误:
'AddComponent不是'WeaponPickUp'的成员
WeaponPickUp
是我的Javascript脚本文件。
以下是我的代码:
#pragma strict
var pickup = false;
var check = 2;
function Update () {
if (Input.GetButtonDown("pickup") && check % 2 == 0){
GetObject();
pickup = true;
check = check + 1;
}
else if (Input.GetButtonDown("pickup") && (check % 2 == 1)){
pickup = false;
check = check - 1;
this.AddComponent("Rigidbody") as Rigidbody;
this.AddComponent("BoxCollider") as BoxCollider;
this.GetComponent(BoxCollider).enabled = true;
}
}
function GetObject(){
var position : GameObject = GameObject.Find("weaponPosition");
this.transform.position = position.transform.position;
Destroy(GetComponent(Rigidbody));
Destroy(GetComponent(BoxCollider));
this.transform.parent = GameObject.Find("FPSController").transform;
this.transform.parent = GameObject.Find("FirstPersonCharacter").transform;
// this.transform.parentposition
}
我不知道为什么会这样。任何人都愿意帮助我,我将一如既往地欣赏它!
答案 0 :(得分:1)
此
this.AddComponent("Rigidbody") as Rigidbody;
this.AddComponent("BoxCollider") as BoxCollider;
this.GetComponent(BoxCollider).enabled = true;
需要
gameObject.AddComponent("Rigidbody") as Rigidbody;
gameObject.AddComponent("BoxCollider") as BoxCollider;
gameObject.GetComponent(BoxCollider).enabled = true;
Destroy
行
AddComponent
是GameObject
的一部分,而非WeaponPickUp
答案 1 :(得分:0)
使用this
删除gameObject
个关键字,然后移除as Rigidbody
和as BoxCollider
这应该是这样的:
gameObject.AddComponent("Rigidbody");
gameObject.AddComponent("BoxCollider");
gameObject.GetComponent("BoxCollider").enabled = true;
上面的语法应该有效,但它已经过时了。它在Unity 5中发生了变化。 如果这样做会导致错误。下面是新的语法和现在正确的方法。
GetComponent.<Rigidbody>();
GetComponent.<BoxCollider>();
GetComponent.<BoxCollider>().enabled = true;
您的整个代码:
#pragma strict
var pickup = false;
var check = 2;
function Update () {
if (Input.GetButtonDown("pickup") && check % 2 == 0){
GetObject();
pickup = true;
check = check + 1;
}
else if (Input.GetButtonDown("pickup") && (check % 2 == 1)){
pickup = false;
check = check - 1;
GetComponent.<Rigidbody>();
GetComponent.<BoxCollider>();
GetComponent.<BoxCollider>().enabled = true;
}
}
function GetObject(){
var position : GameObject = GameObject.Find("weaponPosition");
this.transform.position = position.transform.position;
Destroy(GetComponent(Rigidbody));
Destroy(GetComponent(BoxCollider));
this.transform.parent = GameObject.Find("FPSController").transform;
this.transform.parent = GameObject.Find("FirstPersonCharacter").transform;
// this.transform.parentposition
}