首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity Bullet不起作用

Unity Bullet不起作用
EN

Stack Overflow用户
提问于 2015-12-10 01:48:01
回答 1查看 132关注 0票数 0
代码语言:javascript
复制
using UnityEngine;
using System.Collections;

public class AIEnemy : MonoBehaviour {
   public GameObject bullet;
  public float bulletSpeed = 10;

  public Transform player;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void FixedUpdate () {


    }
 void OnTriggerStay2D(Collider2D col)
    {
        if(col.tag == "Player")
       {
           // Debug.DrawRay(transform.position, player.position - transform.position);
          RaycastHit2D rhit2d = Physics2D.Raycast(transform.position, player.position - transform.position, Mathf.Infinity);
          if (rhit2d.collider.tag == "Player")
            {
             var clone = Instantiate(bullet, transform.position, Quaternion.identity) as Rigidbody2D;
            clone.velocity = (player.position - transform.position * bulletSpeed);
          }
        }
    }
}

这就是我的代码。当玩家停留在触发对撞机中时,它会找到玩家并向其开火。但我的问题是,子弹不会射向玩家,而是直接倒下。我把子弹设为扳机,所以这不是问题所在。(这是一个2D游戏,顺便说一句)这个项目在Github上:https://github.com/Massaxe/2D-AI/

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 02:09:23

我马上看到的一个问题与bulletGameObject类型的事实有关。我将假设这个GameObject引用是您已经构建并链接到AIEnemy实例的预置。这里要注意的关键一点是,GameObject通常充当一对多Component实例的容器,Rigidbody2D本身就是一个容器。下面的代码是我用来访问Rigidbody2D组件的代码:

代码语言:javascript
复制
var clone = Instantiate(bullet, transform.position, Quaternion.identity) as GameObject;
var rigidBody = clone.GetComponent<Rigidbody2D>();
rigidBody.velocity = (player.position - transform.position * bulletSpeed);

至于数学,我会这样计算速度:

代码语言:javascript
复制
var vel = player.position - transform.position;
vel.Normalize();
vel *= bulletSpeed;
rigidBody.velocity = vel;

这样做的目的是计算两个位置之间的向量,但在应用子弹速度之前,它会对向量进行归一化(这意味着向量的大小将为1,但保持适当的方向)。然后,将子弹速度应用于归一化向量。

为了进一步说明这一点,我想指出的是,如果子弹是自己落下的,很可能有一个2D引力作用在子弹上,这可能是也可能不是你正在寻找的东西。此外,还应该检查阻力系数,如果它是大于0的任何值,它将导致子弹随着时间的推移而减速(将其视为摩擦)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34185564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档