一个简单的2D场景,我在X轴上向左/右移动,在Y轴上跳跃/掉下。无论如何,我默认将武器设置为朝右。我将其设为玩家的子代,但使用左箭头或A键时,武器不会切换。虽然没有真正的惊喜。
我对如何应对这种转变感到困惑。
"h1 ~ div"
然后在函数内
public GameObject gun; // define the gun object
在我的动作脚本中:
getComponent<GameObject>(); //Which I may not need to do ?
由于某种原因,我无法想到如何简单地大声笑为什么?
答案 0 :(得分:1)
您需要一个新变量isFacingRight
来跟踪现有的面孔。正如其他人所提到的,您可以翻转局部比例来更改方向。
bool isFacingRight = true;
void Update(){
//other stuff
if(GetKeyDown(KeyCode.A) || GetKeyDown(KeyCode.LeftArrow)){
FaceLeft();
}
if(GetKeyDown(KeyCode.D) || GetKeyDown(KeyCode.RightArrow)){
FaceRight();
}
}
void FaceRight(){
if(!isFacingRight){
gun.transform.localScale = new Vector3(1, 1, 1);
isFacingRight = true;
}
}
void FaceLeft(){
if(isFacingRight){
gun.transform.localScale = new Vector3(-1, 1, 1);
isFacingRight = false;
}
}
*********************解决了************************* *****
我复制了武器并将其翻转到左侧。我手动单击了左侧武器上的停用复选框。这是我使用的代码:
public GameObject gun = Pshoot.gun; // Right facing gun
public GameObject gun1 = Pshoot.gun1; // Left facing gun
if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow)) {
GetComponent<Renderer>().material = rgtFace;
gun.SetActive(false);
gun1.SetActive(true);
// isFacingRight = false;
// FaceLeft();
// gun.transform.localScale = new Vector3(-1,1,-1);
}
在此向左移动检查中,我将右枪设置为false并激活了左枪以显示。 (忽略注释掉的部分,我今天学会了localeScale,所以我将其保留以备后用。您可能不需要它,因此请忽略它)。
if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow))
{
GetComponent<Renderer>().material = lftFace;
gun.SetActive(true);
gun1.SetActive(false);
// isFacingRight = true;
}
以上是用于设置右喷枪的代码。现在,请注意,您将不需要物料代码。那只是我做的动画精灵。您会注意到它上面显示了lftFace,但是我不小心将右脸图像放在leftface变量中,大声笑不影响游戏,我可以接受。不要评价我! :p
无论如何,感谢所有评论帮助我的人!很多爱网络程序员的名人堂!