using JetBrains.Annotations; using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private Transform firePoint; private GameObject bulletPrefab; private Rigidbody2D rb; float speed = 5.0f; float jump = 300.0f; void Start() { firePoint = transform.Find("Player/Firepoint"); bulletPrefab = (GameObject) Resources.Load("Prefabs/Bullet"); rb = GetComponent<Rigidbody2D>(); Debug.Log(bulletPrefab); } void Update() { //左右移动 float hor = Input.GetAxis("Horizontal"); move(hor); //跳跃 if (Input.GetKeyDown(KeyCode.Space)) { rb.AddForce(Vector2.up * jump); } //射击? if (Input.GetMouseButtonDown(0)) { GameObject bullet = Instantiate(bulletPrefab, firePoint.position, Quaternion.identity); bullet.GetComponent<Bullet>().setMoveDir(transform.forward); } } private void move(float hor) { transform.Translate(hor * Time.deltaTime * speed, 0, 0); } }
时间: 2024-02-14 18:26:12 浏览: 158
你的代码看起来基本上是正确的,但有一个小问题在于你调用了`bullet.GetComponent<Bullet>().setMoveDir(transform.forward);`,但是在Bullet脚本中并没有一个名为setMoveDir的方法。你需要根据之前的建议,在Bullet脚本中添加一个公共方法来设置移动方向。
以下是修改后的代码示例:
```csharp
using UnityEngine;
public class Bullet : MonoBehaviour
{
private Vector3 moveDirection;
public void SetMoveDir(Vector3 direction)
{
moveDirection = direction.normalized;
}
void Update()
{
transform.position += moveDirection * Time.deltaTime;
}
}
```
在Bullet脚本中,我们添加了SetMoveDir方法来设置子弹的移动方向。
接下来,在PlayerController脚本中,你可以使用`bullet.GetComponent<Bullet>().SetMoveDir(transform.forward);`来设置子弹的移动方向。
希望这次能帮到你!如果还有其他问题,请随时提问。
阅读全文