您的位置:首页 > 移动开发 > Unity3D

点击图片不同位置,让图片向不同方向运动。

2017-06-07 11:32 260 查看
今天写个小的demo,我相信,大家点击图片,判断是否点击到的功能 很多人都会,这应该是Unity的程序员入门功课。今天我要实现的是 一张图片,我点击图片的不同位置,可以判断出点击了图片哪里,是点击了图片的上部分,下部分,还是左部分,右部分。 好了 不多说,直接说做法。

Unity中创建一个2D 界面。 然后, 添加一个图片。做出如下结果界面



然后呢。 我们给这些小图片添加上 2d 的碰撞体积,和2d刚体

接下来就是代码时间

using UnityEngine;
using System.Collections;

public class touchAddForce : MonoBehaviour {

// Use this for initialization
void Start () {

}
// Update is called once per frame
void Update () {

//if (Input.GetButtonDown("Fire1"))
{
Debug.Log(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
{
if(hit.collider!=null)
{
if (hit.collider.transform == transform)
{
compute();

}
}

}

}

}
private void compute()
{
Vector3 mousePoint = Input.mousePosition;
Debug.Log(new Vector2( mousePoint.x,mousePoint.y));
Vector2 picPoint = Camera.main.WorldToScreenPoint(transform.position);
Debug.Log(new Vector2(picPoint.x, picPoint.y));
Vector2 dire = new Vector2(picPoint.x-mousePoint.x,picPoint.y-mousePoint.y);
Debug.Log(new Vector2(dire.x, dire.y));
transform.GetComponent<Rigidbody2D>().AddForce(dire);
}
}


其实 算法很简单。 就是给如果点击了图片那么就给图片添加一个力, 那么力的方向 怎么判断。     我们就用向量, 哎不喜欢数学。 但是没办法,万物离不开数学。  我们可以把 图片的位置当作坐标原点, 当然,图片的位置也就是图片中心了。 然后呢,我们把鼠标位置当作重点, 这样, 鼠标到原点就是一个向量, 也就是力的方向。 这里有个注意,  我的图片是在 世界坐标, 而鼠标是屏幕坐标, 要做一个转换的。  然后就给 图片加个 鼠标向量力。
 把这个脚本放到图片就好了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity