我正在尝试制作一个2D平台游戏,但是我的播放器并没有在两边开火我不知道我的剧本有什么问题。
using UnityEngine;
using System.Collections;
public class Bullet : MonoBehaviour
{
public float bulletSpeed;
public GameObject bullet;
public Transform bulletX;
GameObject clone;
void Update ()
{
if (Input.GetKeyUp ("space"))
{
clone = Instantiate(bullet,new Vector3(bulletX.position.x,bulletX.position.y+0.1f,0f),Quaternion.identity) as GameObject;
if (GameObject.Find ("Player").GetComponent<Player> ().left == true)
bulletSpeed = -30f;
else
bulletSpeed = 30f;
}
bullet.rigidbody2D.velocity = new Vector2(bulletSpeed * 0.5f, 0f);
Destroy (clone, 1f);
}
}
我试图在if条件下增加速度,但是子弹的移动速度超过了我的需要。
答案 0 :(得分:0)
我认为您的问题很难理解您想要完成的任务,但我可以在您的代码中看到一些错误,这些错误会导致&#34;克隆&#34;你在创造,没用。
更新循环正在持续执行,您已将破坏放置在&#34;按空格&#34;代码块。 Unity试图在每一帧都摧毁它。把它放在空间里。
我觉得它看起来应该更像这样:
if (Input.GetKeyUp ("space"))
{
clone = Instantiate(bullet,new Vector3(bulletX.position.x,bulletX.position.y+0.1f,0f),Quaternion.identity) as GameObject;
if (GameObject.Find ("Player").GetComponent<Player> ().left == true)
bulletSpeed = -30f;
else
bulletSpeed = 30f;
bullet.rigidbody2D.velocity = new Vector2(bulletSpeed * 0.5f, 0f);
Destroy (clone, 1f);
}
这可能无法解答您的问题,但是您可以指定更多您的行为吗?这个脚本运行的对象是什么? (它被称为Bullet
,其中一个字段依据另一个bullet
?)
答案 1 :(得分:0)
Debug.Log你的bulletSpeed * 0.5f
如果我是对的。即使你的玩家正在寻找另一种方式。它正在回归 ABS编号含义(bulletSpeed = -30f&amp; 0.f是!= -44954,但是== 44954)。
或者,您可以使用AddForce而不是Velocity。它更容易控制。
问题。为什么不使用Instantiate Vector2?