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

موضوع: vector2.lerp

vector2.lerp 1 هفته, 1 روز پیش #111925

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

تو تابع وکتور 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 هفته پیش #111958

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

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

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

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

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


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

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

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

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

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


اینم راه 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 هفته پیش ارسال توسط aya.
  • صفحه:
  • 1
مدیران انجمن: mohamad.zakery
زمان ایجاد صفحه: 0.22 ثانیه

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

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

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