【发布时间】:2019-02-05 06:02:23
【问题描述】:
(抱歉,如果格式或其他任何内容不正确,已经使用 stackoverflow 有一段时间了,以前从未问过问题。另外,我是 unity 和 c# 的新手)
我无法发布图片,但这里有一个 imgur 的链接
(很抱歉,我在描述事物时遇到了很多麻烦,我认为图片会有所帮助)
我有一个用于圆形精灵的简单代码,它带有一个附在弹簧上的圆形精灵图,当我握住精灵时,将其向后拖动,然后释放鼠标,该对象会以与我拖动的方向相反的方向飞行它回到(几乎像愤怒的小鸟一样发射)。但是,当我拿着精灵时,我可以通过我关卡上的其他精灵来剪辑它,甚至超出界限。球是浮动的,游戏应该能够向任何方向拖动和发射它
我尝试将弹簧的破断力设置为相当低的水平,因此如果我将它向后拉得太远,球不会发射,但是当我拖动它时,球仍然跟随我的鼠标,当我弹簧断裂后松开,球就掉下来了。
另外,我尝试通过限制弹簧的长度来限制弹簧的半径。但是,它没有用。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LaunchScript : MonoBehaviour
{
public Rigidbody2D rb;
private bool isPressed = false;
public float releaseTime = 0.15f;
private void Update()
{
if (isPressed)
{
rb.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
}
// Start is called before the first frame update
void OnMouseDown()
{
isPressed = true;
rb.isKinematic = true;
}
// Update is called once per frame
private void OnMouseUp()
{
isPressed = false;
rb.isKinematic = false;
StartCoroutine(Release());
}
IEnumerator Release()
{
yield return new WaitForSeconds(releaseTime);
GetComponent<SpringJoint2D>().enabled = false;
this.enabled = false;
}
}
我的预期结果是:球会跟随鼠标并能够向后拖动,但不会穿过绿色的地面块、篮筐或边界块(用于防止球飞出的块)界)。 我的实际结果是:我可以将球拖到屏幕上的任何点,包括直接进入绿地和出界。
【问题讨论】:
-
那么你是说当你用鼠标拖动球时,它能够“无剪辑”穿过地形?您是否在您的球和环境中添加了对撞机?
标签: c# visual-studio unity3d