【发布时间】:2023-02-02 18:10:30
【问题描述】:
在 vs 代码中,我收到此错误“参数 2:无法从‘float’转换为‘UnityEngine.Vector2’[Assembly-CSharp]csharp(CS1503)”。
这是出现错误的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HF_001 : MonoBehaviour
{
public enum ForceType { Repulsion = -1, None = 0, Attraction = 1 }
public ForceType m_Type;
public Transform m_Pivot;
public float m_Radius;
public float m_StopRadius;
public float m_Force;
public LayerMask m_Layers;
private void FixedUpdate()
{
Collider2D[] colliders = Physics2D.OverlapArea(m_Pivot.position, m_Radius, m_Layers);
float signal = (float)m_Type;
foreach (var collider in colliders)
{
Rigidbody2D body = collider.GetComponent<Rigidbody2D>();
if (body == null)
continue;
Vector2 direction = m_Pivot.position - body.position;
float distance = direction.magnitude;
direction = direction.normalized;
if (distance < m_StopRadius)
continue;
float forceRate = (m_Force / distance);
body.AddForce(direction * (forceRate / body.mass) * signal);
}
}
}
我尝试更改变量“m_Radius”的类型
【问题讨论】:
-
OverlapArea使用矩形,因此需要两个点。也许 OverlapCircle 是您要找的?
标签: c# unity3d game-engine game-development unityscript