【问题标题】:error CS7036: There is no argument given that corresponds to the required formal parameter 'player' can't figure out the issue with the code?错误 CS7036:没有给出与所需形式参数“播放器”相对应的参数无法找出代码的问题?
【发布时间】:2020-07-22 17:12:53
【问题描述】:

我还是编码新手,这个问题让我陷入困境。

我在关注tutorial video,了解如何制作开机脚本,但由于某种原因,它不起作用。

我一直在寻找解决方案,但它们似乎都不起作用。任何帮助将不胜感激!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PowerUpPickupEffect : MonoBehaviour 
{
    public GameObject pickupEffect;

    public float multiplier = 2.0f;

    void OnTriggerEnter2D (Collider2D other)
    {
        if (other.CompareTag ("Player")) 
        {
            Pickup ();
        }
    }

    void Pickup (Collider player) 
    {
        Instantiate (pickupEffect, transform.position, transform.rotation);

        player.transform.localScale *= multiplier;

        Destroy (gameObject);
    }
}

【问题讨论】:

标签: c# unity3d


【解决方案1】:

您的方法PickUp 需要Collider 作为参数。

但是:请注意 Collider != Collider2D
它们来自两个完全独立的物理引擎 PhysicsPhysics2D

对于 2D 应该是

void OnTriggerEnter2D(Collider2D other)
{
    if (other.CompareTag("Player"))
    {
        // pass in the expected argument
        Pickup(other);
    }
}

void Pickup(Collider2D player)
{
    Instantiate(pickupEffect, transform.position, transform.rotation);

    player.transform.localScale *= multiplier;

    Destroy(gameObject);
}

或用于 3D

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        // pass in the expected argument
        Pickup(other);
    }
}

void Pickup(Collider player)
{
    Instantiate(pickupEffect, transform.position, transform.rotation);

    player.transform.localScale *= multiplier;

    Destroy(gameObject);
}

【讨论】:

  • 啊,是的 Collider2D。甚至我都没有注意到这一点。 OP 试图在游戏中实现从视频到 2D 的相同 3D 碰撞器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2017-07-18
  • 2019-06-30
相关资源
最近更新 更多