تبلیغات
تبلیغات
تبلیغات
تبلیغات
  • صفحه:
  • 1

موضوع: vector2.lerp

vector2.lerp 1 ماه, 2 هفته پیش #111925

  • aya
  • آفلاین
  • کاربر همیشگی سایت
  • ارسال: 241
  • دریافت تشكر: 147
  • 
سلام.

تو تابع وکتور 2 دات لرپ وقتی میخوای از مکان آ به مکان ب بری آیا امکانش هست کدی بهش اضافه کنی که gravity ریجید بادی توش تاثیری داشته باشه؟

مثلا جای this.transform.position.y این یه چیزی بنویسی نیروی جاذبه خود ریجید بادی توش تاثیر بزاره

اینم بگم ک this.transform.position.y*gravity هم جواب نداد یعنی درست کار نکرد



private Vector2 myTransform;
	private Vector2 myAimTransform;
	private float XAim;
	private float YAim;
	private float secondsForOneLength = 20f;
	private float turnTime;
	 private float gravity =-1 ;
	
	

	void Start () 
	{
		gravity *= Time.deltaTime;
		myTransform = new Vector2 (this.transform.position.x,this.transform.position.y);
		myAimTransform = new Vector2 (this.transform.position.x +8,this.transform.position.y);
		XAim = this.transform.position.x + 8;
		YAim = this.transform.position.y;
	}
	

	void Update () 
	{

		float t;
		t = Mathf.SmoothStep (0f, 1f, Mathf.PingPong (Time.time / secondsForOneLength, 1f));
		this.transform.position = Vector2.Lerp (myTransform, myAimTransform,t);

		if (this.transform.position.x == XAim && Time.time > turnTime ) {
			turnTime = Time.time + 1;
			Debug.Log ("Ok its Time to turn");
		}
	}

پاسخ: vector2.lerp 1 ماه, 2 هفته پیش #111958

  • aya
  • آفلاین
  • کاربر همیشگی سایت
  • ارسال: 241
  • دریافت تشكر: 147
دوستان کسی راهی به ذهنش نمیرسه؟ یا از همون translate استفاده کنم؟

پاسخ: vector2.lerp 1 ماه, 1 هفته پیش #111978

  • مرادیانی
  • آفلاین
  • كاربر فعال
  • ارسال: 556
  • دریافت تشكر: 304
لازم نیست برو از منوی کمپوننت و قسمت فیزیک دوبعدی ، گزینه رجیدبادی دوبعدی رو بزن خودش فیزیک میشه
كاربران زیر تشكر كردند: aya

پاسخ: vector2.lerp 1 ماه, 1 هفته پیش #111987

  • aya
  • آفلاین
  • کاربر همیشگی سایت
  • ارسال: 241
  • دریافت تشكر: 147
مرادیانی نوشته:
لازم نیست برو از منوی کمپوننت و قسمت فیزیک دوبعدی ، گزینه رجیدبادی دوبعدی رو بزن خودش فیزیک میشه


ممنون از جوابت

در واقع مشکل اینجاست که وقتی از تابع وکتور دو دات لرپ استفاده میکنیم 2 وکتور میخواد x,y و ریجید بادی روش تاثیر نداره

این کارو با ترانسفورم.ترانسلیت انجام دادم ولی با لرپ میشه هوش مصنوعی پیچیده تری ایجاد کرد
كاربران زیر تشكر كردند: مرادیانی

پاسخ: vector2.lerp 1 ماه, 1 هفته پیش #111990

  • aya
  • آفلاین
  • کاربر همیشگی سایت
  • ارسال: 241
  • دریافت تشكر: 147
من که راهشو پیدا نکردم دوستان اگه کسی بعدها پیدا کرد بگه ثواب داره


اینم راه Translate

private float xRightAim;
	private float xLeftAim;
	private float speed;
	private float secondsForOneLength = 20f;
	private float turnTime;
	private float gravity ;
	bool dirRight = true;
	bool dirLeft = false;

	void Start () 
	{
		xRightAim = this.transform.position.x + 8;
		xLeftAim = this.transform.position.x - 8;
	}
	

	void Update () 
	{

		float t;
		t = Mathf.SmoothStep (0f, 1f, Mathf.PingPong (Time.time / secondsForOneLength, 1f));

		if(dirRight && !dirLeft){
			speed = 1;
			if (this.transform.position.x < xRightAim) {
				this.transform.localRotation = Quaternion.Euler (0, 0, 0);
				this.transform.Translate (Vector2.right * speed *Time.deltaTime);
				if (this.transform.position.x >= xRightAim) {
					speed = 0;
				}
			}
		}
		Debug.Log (speed);
		Debug.Log (dirRight);
		Debug.Log (dirLeft);


		if (!dirRight && dirLeft) {
			speed = 1;
			if (this.transform.position.x > xLeftAim) {
				this.transform.localRotation = Quaternion.Euler (0, 180, 0);
				transform.Translate (Vector2.right * speed * Time.deltaTime);
				if (this.transform.position.x <= xLeftAim) {
					speed = 0;
				}
			}
		}
		if (speed == 0) {
			StartCoroutine (ChangeDirections ());
		}

	}

	IEnumerator ChangeDirections()
	{
		yield return new WaitForSeconds (1.5f);
		dirRight = !dirRight;
		dirLeft = !dirLeft;
	}


____________________
t اینجا هیچکارس
آخرین ویرایش: 1 ماه, 1 هفته پیش ارسال توسط aya.
  • صفحه:
  • 1
مدیران انجمن: mohamad.zakery
زمان ایجاد صفحه: 0.19 ثانیه

جدیدترین آثار ارسالی در گالری

تبلیغات
تبلیغات
تبلیغات
تبلیغات

جدیدترین ارسالهای تالارگفتگو