Unity2D 鼠标点击并转到
Unity2D click and go to the mouse
我正在制作一个游戏,您可以在其中控制蠕虫。控件很简单:您单击,蠕虫就会转到您单击的位置...至少我是这样做的。
它很容易作弊,因为如果你将鼠标放在一个地方,蠕虫就会开始出现故障并保持不动。 (一旦点击,蠕虫应该不会停止,直到达到下一个级别)
这是一个视频:
https://youtu.be/LIcqvgacI1s
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
private Vector2 mousePosition;
private Rigidbody2D rb;
private Vector2 direction;
public float moveSpeed = 100f;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
if (Input.GetMouseButton(0))
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
direction = (mousePosition - rb.position).normalized;
Vector2 lookDir = mousePosition - rb.position;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
rb.velocity = new Vector2(direction.x * moveSpeed, direction.y * moveSpeed);
}
}
}
如果需要更多信息,我很乐意提供!
提前致谢!
修复方法如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
private Vector2 mousePosition;
private Rigidbody2D rb;
private Vector2 direction;
public float moveSpeed = 100f;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
direction = (mousePosition - rb.position).normalized;
Vector2 lookDir = mousePosition - rb.position;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
rb.velocity = new Vector2(direction.x * moveSpeed, direction.y * moveSpeed);
} else
{
rb.position = new Vector2(rb.position.x, rb.position.y);
}
}
}
我正在制作一个游戏,您可以在其中控制蠕虫。控件很简单:您单击,蠕虫就会转到您单击的位置...至少我是这样做的。
它很容易作弊,因为如果你将鼠标放在一个地方,蠕虫就会开始出现故障并保持不动。 (一旦点击,蠕虫应该不会停止,直到达到下一个级别)
这是一个视频: https://youtu.be/LIcqvgacI1s
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
private Vector2 mousePosition;
private Rigidbody2D rb;
private Vector2 direction;
public float moveSpeed = 100f;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
if (Input.GetMouseButton(0))
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
direction = (mousePosition - rb.position).normalized;
Vector2 lookDir = mousePosition - rb.position;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
rb.velocity = new Vector2(direction.x * moveSpeed, direction.y * moveSpeed);
}
}
}
如果需要更多信息,我很乐意提供!
提前致谢!
修复方法如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
private Vector2 mousePosition;
private Rigidbody2D rb;
private Vector2 direction;
public float moveSpeed = 100f;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
direction = (mousePosition - rb.position).normalized;
Vector2 lookDir = mousePosition - rb.position;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
rb.velocity = new Vector2(direction.x * moveSpeed, direction.y * moveSpeed);
} else
{
rb.position = new Vector2(rb.position.x, rb.position.y);
}
}
}