【发布时间】:2014-07-08 22:01:43
【问题描述】:
我正在使用 Unity 制作 2D 平台游戏,但遇到了一个小问题。我有向玩家发射子弹的敌人。但是,无论敌人面向哪个方向,子弹都只会向一个方向射击。
在我的敌人脚本中我有这个:
Instantiate(bullet, spawnPosition.position, Quaternion.identity);
在我的子弹脚本中我有这个
rigidbody2D.velocity = new Vector2(bulletSpeed,0);
如果可以,请提供帮助。 我理解为什么会发生这种情况,但我无法找到解决方案。为了更新我的问题,我希望能够检查敌人的方向,以便我可以将子弹速度更改为正/负以匹配方向。由于这种类型的敌人会有多个,我不知道该怎么做。
public class bulletScript : MonoBehaviour {
// Use this for initialization
private float bulletSpeed;
GameObject parent;
private Vector3 theScale;
void Start () {
rigidbody2D.velocity = new Vector2(bulletSpeed,0);
}
// Update is called once per frame
void Update () {
// if(transform.localScale.x < 0) bulletSpeed = -100;
// if(transform.localScale.x > 0) bulletSpeed = 100;
}
public void SetEnemy(GameObject obj)
{
parent = obj;
}
然后在 HammerScript.cs 中
public class HammerScript : MonoBehaviour {
public bulletScript bullet;
public Transform spawnPosition;
void FixedUpdate ()
{
instantiate(bullet, spawnPosition.position, Quaternion.identity);
((bulletScript)bullet).SetEnemy(this);
}
}
2 个新错误:
1-Assets/Scripts/Level 2/HammerScript.cs(89,64):错误CS1502:bulletScript.SetEnemy(UnityEngine.GameObject)' has some invalid arguments
2-Assets/Scripts/Level 2/HammerScript.cs(89,64): error CS1503: Argument#1'的最佳重载方法匹配无法转换HammerScript' expression to typeUnityEngine.GameObject'
【问题讨论】:
-
请展示整个相关的代码部分(包括类声明)。
-
我现在收到此错误:Assets/Scripts/Level 2/HammerScript.cs(88,48): error CS1061: Type
UnityEngine.GameObject' does not contain a definition forSetEnemy' and no extension methodSetEnemy' of typeUnityEngine.GameObject ' 可以找到(您是否缺少 using 指令或程序集引用?) -
你应该把
Enemy parent;改成GameObject parent;。 -
请再次检查我的回答。您需要将
bullet转换为bulletScript。 -
新的错误是什么?
标签: c# unity3d unityscript