【发布时间】:2014-05-08 02:33:47
【问题描述】:
在使用 Unity 2d 脚本时遇到了一些问题。我有精灵工厂,目前有 2 个脚本。一个用来跑,一个用来攻击。我遇到的问题如下:
1) 我的角色在向右移动时运行良好。当他向左跑时,空闲动画总是设置在右侧。所以当他停止向左跑时,它会在他跑完后自动将角色移回正确的方向
2) 我有一个攻击脚本。该脚本在单独编写脚本时工作正常,即 Attack.cs。然而,当我也激活我的步行脚本时,攻击动画完全消失了。我需要将代码合并在一起吗?
3) 此外,我有 3 组攻击,我希望将其编程为字母 A。我的角色可以发起第一次攻击,但由于是 3 组攻击,用户需要按攻击 3发起 3 次攻击的次数。如果角色进行 2 次攻击,它应该重置为初始攻击。
任何关于如何精通 C# 的建议也将是有益的,因为我不擅长 Unity 编码 =(
我的代码(攻击):
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.GetKeyDown(KeyCode.A))
{
sprite.Play("Attack");
Vector3 pos = transform.position;
pos.x += Time.deltaTime * 1;
transform.position = pos;
}
}
}
我的代码(运行)
using UnityEngine;
using System.Collections;
using FactorySprite = SpriteFactory.Sprite;
public class Walk : MonoBehaviour {
// you forgot to set name of variable representing your sprite
private FactorySprite sprite;
// Use this for initialization
void Start () {
sprite = GetComponent<FactorySprite> (); // Edited
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.RightArrow)) {
sprite.Play ("Walk"); // heh, remember C# is case sensitive :)
Vector3 pos = transform.position;
pos.x += Time.deltaTime * 6;
transform.position = pos;
} else if (Input.GetKey (KeyCode.LeftArrow)) {
sprite.Play ("Walk0"); // heh, remember C# is case sensitive :)
Vector3 pos = transform.position;
pos.x += Time.deltaTime * -6;
transform.position = pos;
} else {
sprite.Stop ();
}
}
}
【问题讨论】: