如何创建一个朝向正确的飞行物?

在游戏的开发过程中,我们总是会需要创建一些飞行物,他们大多都有一些特性:

  • 可碰撞
  • 可旋转
  • 可导航(可选)

这不是件多难的事情,但是有一个点困扰了我许久,就是这个可旋转上,我们要的旋转当然是物体朝着移动方向的正确旋转,这里给出一个模板。分两部分代码,主要是生成子弹的外部调用部分和子弹自己的逻辑部分:

file
1
2
3
4
5
6
Vector3 direction = target.transform.position - transform.position;
direction.z = 0;
direction.Normalize();
var tempBullet = Instantiate(bullet, transform.position, Quaternion.LookRotation(Vector3.forward, direction));
tempBullet.SetActive(true);
tempBullet.GetComponent<EnemyBullet>().SetData(AttackDamage, direction);
file
1
2
3
4
5
6
7
8
9
// FixedUpdate
transform.position += new Vector3(m_direction.x, m_direction.y, 0) * Time.deltaTime * m_speed;

// SetData
public void SetData(int hurt, Vector2 direction)
{
m_hurt = hurt;
m_direction = direction;
}

主要不能错的是这两句:

1
2
3
4
5
6
7
// in file enemy
var tempBullet = Instantiate(bullet, transform.position, Quaternion.LookRotation(Vector3.forward, direction));
tempBullet.SetActive(true);

// in file enemyBullet
transform.position += new Vector3(m_direction.x, m_direction.y, 0) * Time.deltaTime * m_speed;

时间比较紧张,我先休息一下,有时间再来仔细讲解这份代码。


如何创建一个朝向正确的飞行物?
http://hexo.zhywyt.me/posts/818482b58c2a/
作者
zhywyt
发布于
2024年12月9日
更新于
2024年11月26日
许可协议