【发布时间】:2021-01-26 15:03:41
【问题描述】:
我正在尝试向玩家方向射击子弹,但子弹已安装但未离开初始位置,不知道为什么,代码如下:
using UnityEngine;
using System.Collections;
public class AtackPlayer : MonoBehaviour {
public string playerTag = "Player";
public AnimationClip startAtack;
public AnimationClip endAtack;
public float atackInterval = 2f;
public GameObject enemyBullet;
public float bulletSpeed = 20f;
private Animator _anim;
private Transform _transform;
// Use this for initialization
void Start () {
_anim = GetComponentInParent<Animator>();
_transform = GetComponent<Transform>();
}
private IEnumerator Atack(Vector2 playerPosition)
{
_anim.Play(startAtack.name);
yield return new WaitForSeconds(startAtack.length); // executa o clipe e ataca
GameObject thisBullet = Instantiate(enemyBullet, _transform.position, Quaternion.identity) as GameObject; //instancia o bullet prefab
thisBullet.transform.position = Vector2.Lerp(thisBullet.transform.position, playerPosition, bulletSpeed * Time.deltaTime);
_anim.Play(endAtack.name);
yield return new WaitForSeconds(endAtack.length); // executa o clipe de finalização do ataque
yield return new WaitForSeconds(atackInterval); // executa o clipe de finalização do ataque
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D(Collider2D player)
{
if (player.gameObject.tag == playerTag)
{
Vector2 playerPos = player.transform.position;
StartCoroutine(Atack(playerPos));
}
}
}
子弹预制件有一个rigidbody2d和一个圆形碰撞器,还有精灵渲染器和一个动画器来处理它的动画。
有什么帮助吗?
【问题讨论】:
-
也许子弹相信和平、爱和理解。
-
我要杀了他们=(
-
我认为是因为您从未告诉它离开初始位置。
-
初始位置在行中:thisBullet.transform.position = Vector2.Lerp(thisBullet.transform.position, playerPosition, bulletSpeed * Time.deltaTime);