不通过Unity攻击的角色

时间:2014-04-16 22:04:14

标签: c# unity3d

所以我使用SpriteFactory构建了攻击,并且只想将键盘字母 A 指定为默认攻击。我使用GetKeyUp的唯一目的是让角色进行一次攻击,而不是多次像循环(即GetKeyDown)。在这个阶段,我没有包括任何敌人或任何东西,因为我只想让角色在我按 A 时简单地攻击。我已经包含了游戏对象并添加了Attack.cs但没有成功。也许我完全忽略了我正在做的事情,但是在正确的方向上的一些帮助将会受到赞赏。

using UnityEngine;
using System.Collections;

public class Attack : MonoBehaviour {
    // Use this for initialization
    void Start () {
    }

    // Update is called once per frame
    void Update () {
        if(Input.GetKeyUp(KeyCode.A)) {
        }
    }
}

好的,所以我尝试了以下方法。调整了代码如下:

using UnityEngine;
using System.Collections;
using FactorySprite = SpriteFactory.Sprite;
public class Attack : MonoBehaviour {

// you forgot to set name of variable representing your sprite
private FactorySprite sprite;

// Use this for initialization
void Start () {
    sprite = GetComponent<FactorySprite> (); // Edited
}
void Update () 
{
    if(Input.GetKeyUp(KeyCode.A)) 
    {
        sprite.Play("Attack");     
    }
}
}

但现在有一个&#39; nullReferenceError&#39;&#39;对象引用未设置为即时对象?

1 个答案:

答案 0 :(得分:0)

您必须在循环中添加yourSprite.Play("AnimationName");

void Update () 
{
    if(Input.GetKeyUp(KeyCode.A)) 
    {
         yourSprite.Play("AnimationName");     
    }
}

为此,您必须使用GetComponent()将精灵的引用添加到脚本中 顺便说一句,GetKeyDown只针对每次按键触发一次,你也可以使用它。 (GetKey()会触发每一帧)