【发布时间】:2016-06-02 18:33:26
【问题描述】:
大家好,尝试构建一个简单的游戏,
这是我的代码 当我运行此代码时,它给了我错误“playerMovement”不是“UnityEngine.Rigidbody”的成员。
public var speed : int = 15;
var player : Rigidbody;
var player2 : Rigidbody;
function Start () {
player = GetComponent.<Rigidbody>();
player2 = GetComponent.<Rigidbody>();
}
function playerMovement(){
if(Input.GetKey(KeyCode.UpArrow)){
player.AddForce(Vector3.forward*speed);
Debug.Log("Player 1 is moving forward");
}
if(Input.GetKey(KeyCode.DownArrow)){
player.AddForce(Vector3.back*speed);
}
if(Input.GetKey(KeyCode.LeftArrow)){
player.AddForce(Vector3.left*speed);
}
if(Input.GetKey(KeyCode.RightArrow)){
player.AddForce(Vector3.right*speed);
}
}
function player2Movement(){
if(Input.GetKey(KeyCode.UpArrow)){
player2.AddForce(Vector3.forward*speed);
Debug.Log("Player 2 is moving forward");
}
if(Input.GetKey(KeyCode.DownArrow)){
player2.AddForce(Vector3.back*speed);
}
if(Input.GetKey(KeyCode.LeftArrow)){
player2.AddForce(Vector3.left*speed);
}
if(Input.GetKey(KeyCode.RightArrow)){
player2.AddForce(Vector3.right*speed);
}
}
function Update () {
player.playerMovement();
player2.playerMovement();
}
它给了我错误“playerMovement”不是“UnityEngine.Rigidbody”的成员。 如何解决这个问题。
【问题讨论】:
-
函数更新() { player.playerMovement(); player2.playerMovement(); }
-
那是什么意思
-
我写了一个答案,但我现在看到它有点复杂所以删除它。所以你真正想要的是从 player1 和 player2 有两个单独的脚本。您尝试了从 RigidBody 参考中神奇地调用 playerMovement 方法。
-
我们不能在一个脚本中制作它并为每个玩家制作两个方法并在更新方法中调用它们
-
当然可以。但是,问题是您真正想要的 - 现在您将在 smae 时间内移动两个玩家对象,因为他们使用相同的键码两次触发移动。你需要我问一些逻辑来分开触发它们的动作。
标签: javascript unity3d game-engine