【问题标题】:How to find out who shot a projectile如何找出射弹的人
【发布时间】:2021-02-17 21:43:46
【问题描述】:

所以我正在尝试制作一款具有类似于《守望先锋》/《圣骑士》的能力的多人游戏。总而言之,一个技能应该是一种在地面上移动并允许玩家在其活着的任何时间传送到其位置的弹丸。我找不到只传送发射它的玩家的解决方案,因为到目前为止,在我的测试中,当一个玩家激活他们的能力时,所有玩家都会传送。我该如何解决这个问题?

我的代码:

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
            GetComponent<playerController>().heldAbility = "gateCrash";

        if (GetComponent<playerController>().heldAbility == "gateCrash")
            holding = true;
        else
            holding = false;

        if (holding && Input.GetMouseButtonDown(0))
            PhotonNetwork.Instantiate(Path.Combine("PhotonPrefabs", "GateCrashModel"), spawnPos, transform.rotation, 0);
    }

此代码附在弹丸上:

    public float speed = 10;

    PhotonView pv;

    private void Awake()
    {
        pv = transform.GetComponent<PhotonView>();
    }

    private void FixedUpdate()
    {
        transform.Translate(transform.forward * speed * Time.fixedDeltaTime);
    }

我想我应该让一些东西作为 instatntiation 参数,但不知道是什么。

【问题讨论】:

  • 您应该向我们提供有关您的工作流程的更多信息。您只是在描述问题,但根据您的工作流程,可以有很多方法来解决它。除非您编辑和改进您的问题,否则您的问题可能会被 mods 关闭。 How to create a Minimal, Reproducible Example

标签: unity3d photon


【解决方案1】:

一个简单的方法是为每个射弹添加一个shotOwner 属性。每次发射射弹时,更新shotOwner 以指向发射射弹的玩家对象。 (除其他外,这还可以让您实现“Player_X 杀死 Player_Y”功能。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多