首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >改变transform.position绝不等于transform.position + transform.forward

改变transform.position绝不等于transform.position + transform.forward
EN

Stack Overflow用户
提问于 2021-12-05 09:19:55
回答 1查看 34关注 0票数 0

我正在创建一个基本的射击机制,其中子弹结束在一个LineRenderer的末尾。实例化项目的代码如下:

代码语言:javascript
运行
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BulletScript : MonoBehaviour
{
    [SerializeField] PlayerAttacking PA;
    [SerializeField] float speed;
    Vector3 BulletEndDist;

    // Start is called before the first frame update
    void Start() {
        PA = GameObject.Find("AttackTrail").GetComponent<PlayerAttacking>();
        BulletEndDist = transform.position + (transform.forward * PA.TrailDistance) ;
    }

    // Update is called once per frame
    void Update() {
        if(transform.position == BulletEndDist)
        {
            Destroy(this.gameObject);
        }
        transform.Translate(new Vector3(0, 0, speed));
    }

    private void OnCollisionEnter(Collision collision) {
        if(collision.transform.tag == "Enemy")
        {
            // Decrease health
            Destroy(this.gameObject);
        }
        else
        {
            Destroy(this.gameObject);
        }
    }
}

我遇到的问题是子弹永远不会被销毁,通过一些Debug.Logs,我发现它没有进入更新中的if条件。这是没有意义的,因为子弹应该最终到达BulletEndDist?请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-05 09:34:59

如果要检查子弹与播放机之间的距离,应该使用Vector3.Distance函数计算到浮点的距离,这样就可以将子弹与播放器之间的最大距离进行比较。

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

https://stackoverflow.com/questions/70232910

复制
相关文章

相似问题

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