【发布时间】:2020-02-11 16:36:04
【问题描述】:
我有一些 mouseinput ,我将其转换为 Vector3。 现在我使用这个输入并计算了鼠标输入和我的游戏对象位置之间的距离。 该方法返回一个浮点数作为我的距离,我将它与我的 MaxDistance 浮点数进行了比较。 因此,当我的 Inputdistance 小于或等于我的 MaxDistance 时,它应该破坏我的 GameObject。 但是当我运行我的游戏时,没有任何效果。 我也尝试增加 MaxDistance 值,但也没有用。
这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tropfen : MonoBehaviour
{
public float speed = 10.0f;
Rigidbody2D rb;
AudioSource source;
[SerializeField] AudioClip[] soundClips;
[SerializeField] GameObject particleEffect;
[SerializeField] float maxDistance = 20f;
void Start()
{
rb = GetComponent<Rigidbody2D>();
rb.velocity = new Vector2(0, -speed * Time.deltaTime);
source = GetComponent<AudioSource>();
source.clip = soundClips[Random.Range(0, soundClips.Length)];
}
// Update is called once per frame
void Update()
{
Vector3 screenPos = Input.mousePosition;
Camera.main.ScreenToWorldPoint(screenPos);
float TropfenTouchDistance = Vector3.Distance(screenPos, gameObject.transform.position);
if ( TropfenTouchDistance <= maxDistance)
{
TropfenDestruction();
}
}
private void TropfenDestruction()
{
Destroy(gameObject);
AudioSource.PlayClipAtPoint(source.clip, transform.position);
GameObject effect = Instantiate(particleEffect, transform.position, Quaternion.identity) as
GameObject;
Destroy(effect, 2f);
FindObjectOfType<Gameplay>().IncreaseScore(1);
}
}
【问题讨论】:
-
您没有使用 Camera.main.ScreenToWorldPoint 的返回值 - 这可能是计算距离时的问题吗?
标签: c# unity3d vector game-engine