انجمن تخصصی بازی سازی پرومیکرز

نسخه‌ی کامل: زاویه ابجکت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام؛
من در حال کار بر روی یه بازی دو بعدی با گرافیک Top-Down در یونیتی هستم که اولین کارم هست.
بازی دو پلیر داره که بازیباز ها می تونن اون ها رو با joy Stick (کنترلر مجازی لمسی!) حرکت بدن.
حالا من میخوام با یه کد ، یه کاری کنم که دو پلیر در هر موقعیت (position) ــی که باشند ، زاویه شون طوری باشه که انگار دارن به هم نگاه می کنند و روبروی هم هستند.
به این عکس نگاه کنید:
resim
لطفاً HELP ــم کنیدsad
این اموزش ها شاید بدردتون خورد ، من که نفهمیدم:
http://answers.unity3d.com/questions/666...acter.html
http://answers.unity3d.com/questions/492...ation.html
قند شکن یادتون نره
مطمعن نیستم ولی توی answers.unity خوندم که باید یه ربطی به این کد داشته باشه: Quaternion.Slerp
اینم کد کاملش ، البته نمیدونم این بدرد مشکل من میخوره یا نه:
resim
فکر کنم جواب سوال من اینجاست: http://www.crydev.ir/thread79.html
الان وقت ندارم ولی فردا صبح ، تستش میکنم
این واسه lookat سه بعدی:
کد php:
// This complete script can be attached to a camera to make it 
    // continuously point at another object.
    
    // The target variable shows up as a property in the inspector. 
    // Drag another object onto it to make the camera look at it.
using UnityEngine;
using System.Collections;

public class 
ExampleClass MonoBehaviour {
    public 
Transform target;
    
    
void Update() {
        
// Rotate the camera every frame so it keeps looking at the target 
        
transform.LookAt(target);
    }

اینم یکی دیگه:
http://answers.unity3d.com/questions/650...ingle.html
یه دونه واسه lookat2d قبلا گذاشته بودم نمی دونم به کار می یاد یا نه :
http://promakers.ir/showthread.php?tid=1...#pid127318


کدشو اگه دستکاری کنی فکر کنم یه چیز تو این مایه ها باید بشه :
کد php:
public Vector3 targetPos;
float turnSpeed=5;
            
// 4
void Update () 
{
           
Vector3 currentPosition transform.position;
            
targetPos=targetPos.transform.position;
            
rotDirection targetPos currentPosition;
            
rotDirection.0
            
rotDirection.Normalize();
        
        
Vector3 target rotDirection moveSpeed currentPosition;
        
float targetAngle Mathf.Atan2(rotDirection.yrotDirection.x) * Mathf.Rad2Deg;
        
transform.rotation 
            
Quaternion.Slerptransform.rotation
                             
Quaternion.Euler00targetAngle ), 
                             
turnSpeed Time.deltaTime );
    } 
کد تو تمیز تری هم میشه ساخت اما من عجله ای نوشتم. امیدوارم بچه روش کار کنن و بهترشو ارائه بدنyummi
من این کد آخریه رو که شما دادید تست کردم ، اصلاً هم دستکاریش نکردم فقط قبل rotDirection یه Vector3 اضافه کردم ، ولی فایده نداشت ، متناسب با موقعیت پلیر نمی چرخید ، همینجوری برای خودش می چرخید.

من چیزی از این ها نمی فهمم؛ منتظر یه آدم از خود گذشته(!) ام که بیاد و یه توضیح خوب بده و یه راه حل خوب برای این مشکل sad
به هر حال از زحمات شما ممنونmwah
چیز ساده ای هستا ، نمیدونم چرا اینقد منو دچار مشکل کرده
یه بار دیگه سوالمو بگم: دو پلیر داریم (2بعدی از نمای بالا) ، که میتونیم هر دو رو حرکت بدیم ، حالا میخوام زاویه پلیر ها همیشه طوری باشه که انگار رو بروی هم اند و دارن به هم نگاه می کنند.
منتظرم ، منتظر جواب.........
اون متغیر public که گرفتم باید گیم ابجکت رو بکشی روش.
ضمنا اسکریپت رو بده به هر دو گیم ابجکت.
ضمنا اسپرایت ها و سورستو بذار ببینم حالیم میشه یا نه.
کد ارور میده؛
سورس رو هم با پ.خ. بهتون دادم
ببخشید که دارم وقت تون رو می گیرم
ممنون ، این کدی که در http://promakers.ir/showthread.php?tid=1...#pid129418 دادید درسته و کار میکنه. ولی به راه رفتن پلیر ها لطمه میزنه؛ آخه من برای حرکت پلیر ها از این کد استفاده میکنم: transform.Translate = (Vector3.right * (Time.delta.Time * speed
برای همین وقتی با کدی که شما دادید ، پلیر ها تغییر زاویه میدن ، مفهوم vector3.right اونها هم تغییر می کنه
الان به کدی احتیاج دارم که پلیر در هر زاویه ای که باشه ، به راست بره یا هر جهتی که من بگم
sadخیلی وقتتونو گرفتم
البته من از 3 easy touch استفاده می کنم ، ولی برای تست درون کامپیوتر از کد هایی که بالا گفتم استفاده میکنم.
اگه بشه با تنظیمات خود easy touch هم کاری کرد که مشکل حرکت پلیر حل بشه ، خوبه
مشکل من ، مشکل این اقا هم هستhttp://promakers.ir/showthread.php?tid=9149
جوابو یافتم:this.transform.Translate(Vector3.right * ( Time.deltaTime * speed ) , Space.World );
مشکل از کد player.cs هست.
اگه می خوای حول خودش بچرخه Space.Self میدی و اگه می خوای حول جهان(بدون مرکزیت pivot خودش) بچرخه Space.World میدی:
http://promakers.ir/showthread.php?tid=1...#pid129475