点击图片不同位置,让图片向不同方向运动。
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中创建一个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);
}
}
其实 算法很简单。 就是给如果点击了图片那么就给图片添加一个力, 那么力的方向 怎么判断。 我们就用向量, 哎不喜欢数学。 但是没办法,万物离不开数学。 我们可以把 图片的位置当作坐标原点, 当然,图片的位置也就是图片中心了。 然后呢,我们把鼠标位置当作重点, 这样, 鼠标到原点就是一个向量, 也就是力的方向。 这里有个注意, 我的图片是在 世界坐标, 而鼠标是屏幕坐标, 要做一个转换的。 然后就给 图片加个 鼠标向量力。
把这个脚本放到图片就好了。
相关文章推荐
- JS图像映射的应用,在一个图片点击或移动到不同位置有不同响应
- 如何实现在一个界面上点击不同的位置,会有跳转到不同的Activity上(假设背景是一个图片)
- JS图像映射的应用,在一个图片点击或移动到不同位置有不同响应
- css实现对背景图片的定位,获得一张图片上不同位置的内容
- jQuery获取当前鼠标相对位置坐标和点击图片跳转上一张或下一张功能
- listview中有按钮、图片等需要不同点击处理的控件如何处理
- 点击视图中的图片拖动位置
- 让图片直线移动到鼠标点击位置,类似游戏里的人物走动!
- translate实现图片运动,并显示在指定位置
- 【Activity、service】点击不同的图片播放不同的声音
- 使用PHP根据图片色界在不同位置加水印
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- 页面同一位置重叠多张图片,鼠标点击切换特效
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- android之level-list(同一位置显示不同的图片)
- 在图片的不同位置添加文字
- 经典的图片无缝滚动,点击向上向下按钮还可以控制方向
- 同一位置(同一个ImageView)显示不同的图片--level-list (转)
- 图片热区,使图片的某个位置可以点击链接到其他页面
- [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中