プログラミングとイラストレーション » ドラッグ、離す、イージング|Unity5
プログラミングとイラストレーション > Unity > ドラッグ、離す、イージング|Unity5

ドラッグ、離す、イージング|Unity5

ドラッグ、離す、イージング|Unity5

ドラッグ、離す、イージング|Unity5: ZIPファイル(523kb)

C#

Walking.cs

using UnityEngine;
using System.Collections;

public class Easing2 : MonoBehaviour {
	float offsetX;
	float offsetY;
	bool easingFlag = false;
	float easing = 0.02f;
	float targetX = 0;
	float targetY = 0;

	// Update is called once per frame
	void Update () {
		Vector2 tapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		Collider2D aCollider2d = Physics2D.OverlapPoint(tapPoint);

		if(Input.GetMouseButtonDown(0)){

			if (aCollider2d) {
				easingFlag = false;
				Vector2 mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
				Vector2 spritePos = transform.position;
				float dx = mousePos.x - spritePos.x;
				float dy = mousePos.y - spritePos.y;
				float rad = Mathf.Atan2 (dy, dx);
				float dist = Mathf.Sqrt (dx * dx + dy * dy);
				offsetX = Mathf.Cos (rad) * dist;
				offsetY = Mathf.Sin (rad) * dist;
			}
		}

		if(Input.GetMouseButton(0)){

			if (aCollider2d) {
				easingFlag = false;
				Vector2 mouseMovePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
				Vector2 sprite = transform.position;
				sprite.x = mouseMovePos.x - offsetX;
				sprite.y = mouseMovePos.y - offsetY;
				transform.position = sprite;
			}
		}

		if(Input.GetMouseButtonUp(0)){
			if (aCollider2d) {
				easingFlag = true;
			}
		}

		if (easingFlag == true) {
			Vector2 v = transform.position;
			float vx = (targetX - v.x) * easing;
			float vy = (targetY - v.y) * easing;
			v.x += vx;
			v.y += vy;
			transform.position = v;
		}
	}
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントフィード

トラックバック URL : http://www.htmlcode.jp/%e3%83%89%e3%83%a9%e3%83%83%e3%82%b0%e3%80%81%e9%9b%a2%e3%81%99%e3%80%81%e3%82%a4%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0%ef%bd%9cunity5/trackback/