درود مهمان گرامی! ثبت نام

جشنواره بازیسازی پرومیکرز

امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
اسکریپت های مخصوص گیم پلی
#1
اسکریپت حرکت به جایی که کلیک کردیم move2click در یونیتی:
کد js :
کد php:
// Click To Move script
// Moves the object towards the mouse position on left mouse click
 
var smooth:int=1// Determines how quickly object moves towards position
 
private var targetPosition:Vector3;
 
function 
Update () {
    if(
Input.GetKeyDown(KeyCode.Mouse0))
    {
        var 
playerPlane = new Plane(Vector3.uptransform.position);
        var 
ray Camera.main.ScreenPointToRay (Input.mousePosition);
        var 
hitdist 0.0;
 
        if (
playerPlane.Raycast (rayhitdist)) {
            var 
targetPoint ray.GetPoint(hitdist);
            
targetPosition ray.GetPoint(hitdist);
            var 
targetRotation Quaternion.LookRotation(targetPoint transform.position);
            
transform.rotation targetRotation;
        }
    }
 
    
transform.position Vector3.Lerp (transform.positiontargetPositionTime.deltaTime smooth);

اسکریپت بالا به زبون js هست.بندازید روی player.اجرا کنید. هرجا کلیک می کنید player میره اونجا.
پارامتر smooth روی 1 تظیم شده.اگه مقدارش بیشتر بشه سرعت حرکت بیشتر میشه.
نکته: اسکریپت فوق برای بازی های استراتژی از نمای کامل بالا کار نمی کنه)
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، qwerty13 ، reza9322 ، fakhtigamer
#2
اسکریپت حرکت سه بعدی پلیر در یونیتی/اسکریپت کاراکتر کنترلر:

این اسکریپت رو بدید به player .
نکته: پلیر نباید کامپونتت rigid body داشته باشه.ضمنا یک کامپوننت character controller هم بدید به player.
کد php:
#pragma strict


function Start () {

}
private var 
moveDirection Vector3 Vector3.zero;
function 
Update () {
   
 var 
speed=5;
 var 
jumpSpeed=5;
 var 
gravity=5;
        var 
controller CharacterController GetComponent(CharacterController);
        if (
controller.isGrounded) {
            
// We are grounded, so recalculate
            // move direction directly from axes
            
moveDirection Vector3(Input.GetAxis("Horizontal"), 0,
                                    
Input.GetAxis("Vertical"));
            
moveDirection transform.TransformDirection(moveDirection);
            
moveDirection *= speed;
            
            if (
Input.GetButton ("Jump")) {
                
moveDirection.jumpSpeed;
            }
        }
        
// Apply gravity
        
moveDirection.-= gravity Time.deltaTime;
        
        
// Move the controller
        
controller.Move(moveDirection Time.deltaTime);
    




اسکریپت حرکت دو بعدی player به چپ و راست در یونیتی:
کد php:
//Player.Cs
//move 2d player Left/Right Unity
//Author:Sajjad3011
using UnityEngine;
using System.Collections;

public class 
player MonoBehaviour {

    private 
Animator animator;
    private 
int walkSpeed=5;

    private 
float xScale,yScale;
    private 
bool run;

    
void Start () {
        
animator this.GetComponent<Animator> ();
        
xScale transform.localScale.x;
        
yScale transform.localScale.y;

    }

    
void Update(){ 
        if (
Input.GetKey(KeyCode.RightArrow)) {
            
run=true;
            
GetComponent<Rigidbody2D>().velocity=new Vector2(walkSpeed,GetComponent<Rigidbody2D>().velocity.y);
            
transform.localScale=new Vector2(xScale,yScale);
        }
        if (
Input.GetKey (KeyCode.LeftArrow)) {
            
run=true;
            
GetComponent<Rigidbody2D>().velocity=new Vector2(-walkSpeed,GetComponent<Rigidbody2D>().velocity.y);
            
transform.localScale=new Vector2(-xScale,yScale);
        }
        if (
Input.anyKey==false){
            
GetComponent<Rigidbody2D>().velocity=new Vector2(0,GetComponent<Rigidbody2D>().velocity.y);
            
run=false;
        }

        if (
animator != null) {
            
animator.SetBool ("run"run);

        }

    }


https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، m.babayi574 ، reza9322 ، fakhtigamer
#3
حرکت دو بعدی پلیر در یونیتی به وسیله ی easy touch version 3
حرکت دو بعدی player
ویرایش:1/21/2016:

کد php:
//Player 2d move+shoot+jump+double jump
//csharp code
//Author:Sajjad3011
//unity 5.1 final
using UnityEngine;
using System.Collections;
public class 
player MonoBehaviour {
    
    public 
float speed=0.1f,jumpForce=10f;
    private 
bool grounded=false;
    public 
Animator anim;
    private 
float xScale,yScale;
    public 
Rigidbody2D rb2d;
    private 
float signX;
    
    
void Start ()
    {
        
anim=GetComponent <Animator>();
        
xScale transform.localScale.x;
        
yScale transform.localScale.y;
    }    
    
void FixedUpdate () 
    {
        if (
rb2d.velocity.== 0
        {
            
grounded=true;
            
Debug.Log ("on ground");
        } else {
            
grounded false;
            
Debug.Log ("on air");
        }
        if(
grounded && !Input.anyKey)//if we are on ground and no key pressed
        
{
            
rb2d.velocity = new Vector2 (0,0);//stop(x,y)
            
anim.SetInteger("state",1);//play idle animation
        
}
        if (
Input.GetKey (KeyCode.LeftArrow))//if Left
        
{
            
anim.SetInteger("state",2);//play Run animation
            //rb2d.velocity = new Vector2 (-speed ,rb2d.velocity.y);//move left 
            
transform.position += new Vector3(-speed00);
            
transform.localScale = new Vector2 (-xScale,yScale);//face left      
        
}
        if (
Input.GetKey (KeyCode.RightArrow))//if Right      
        
{      
            
anim.SetInteger("state",2);//play Run animation
            //rb2d.velocity = new Vector2 (speed ,rb2d.velocity.y);//move right
            
transform.position += new Vector3(+speed00);
            
transform .localScale = new Vector2 (xScale,yScale);//face right
        
}
        
        if (
Input.GetKeyUp (KeyCode.UpArrow )) jump();    
    }
//
    
    
void jump(){
        if (
grounded) {
            
rb2d.velocity = new Vector2 (rb2d.velocity.xjumpForce);
            
anim.SetInteger ("state"3);//play jump animation
            
        
}//end switch
        
else
            ;
//if on air
        //anim.SetInteger("state",4);//play double jump animation
        //anim.SetInteger("state",1);//play double jump animation
    
}//jump()
    
    
    
void On_JoystickMoveMovingJoystick move){
        
anim.SetInteger("state",2);//run
        
signX Mathf.Sign (move.joystickAxis.x);
        
transform.position += new Vector3(signX*speed00);
        
//rb2d.velocity = new Vector2 (signX *speed ,rb2d.velocity.y);
        
transform.localScale = new Vector2 (signX xScale,yScale);
        if (
move.joystickAxis.0jump ();
        
    }
    

در کد فوق اگه دقت کنید فلش چپ و راست رو با transform نوشتم و فلش بالا رو با velocity از rigidbody2d .
velocity به معنی شتاب هست و در فیزیک معمولا پرش رو بهتره با اون بسازیم که جاذبه زیباتر بشه.
اما فلش چپ و راست رو چرا با velocity نساختم دلیلش این بود که وقتی فلش راست رو رها می کردم بلافاصله کاراکتر ایست نمی کرد و یکم راه می رفت بعدش می موند که این رو من نمی خواستم.
دقت کنید که اسم اسکریپت رو بذارید player چون اسم کلاس داخل سورس بالا player هست و حتما باید اسم اسکریپت و اسم کلاس یکسان باشه(توی سیشارپ)
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط fakhtigamer
#4
کد بهینه یا optimize شده حرکت/پرش/دابل جامپ/راه رفتن دو بعدی player در یونیتی 5 با استفاده از Easy touch version 3 سیشارپ
حرکت دو بعدی پلیر در یونیتی به وسیله ی easy touch version 3
حرکت دو بعدی player
ویرایش:1/25/2016:

سازنده:سجاد
در این کد افت فریم نداریم یا اگه باشه خیلی کمه و همچنین از لحاظ فلش چپ و راست هم از حالت بهینه شده ترنسفورم استفاده کردیم و متغیر کمکی به عنوان حافظه موقت.
کد php:
//optimized Player 2d move+shoot+jump+double jump
//csharp language
//Author:Sajjad3011
//unity 5.2 final
//Easy touch joystick version 3
//gameover.blog.ir
//promakers.ir
using UnityEngine;
using System.Collections;
public class 
player MonoBehaviour {
    
    public 
float speed=0.1f,jumpForce=10f;
    private 
bool grounded=false;
    public 
Animator anim;
    private 
float xScale,yScale;
    public 
Rigidbody2D rb2d;
    private 
float signX;
    private 
Transform _transform;
    
    
void Start ()
    {
        
//anim=GetComponent <Animator>();
        
xScale transform.localScale.x;
        
yScale transform.localScale.y;
        
_transform this.transform;//cache for optimization
    
}    
    
void FixedUpdate () 
    {
        if (
rb2d.velocity.== 0
        {
            
grounded=true;
            
Debug.Log ("on ground");
        } else {
            
grounded false;
            
Debug.Log ("on air");
        }
        if(
grounded && !Input.anyKey)//if we are on ground and no key pressed
        
{
            
rb2d.velocity = new Vector2 (0,0);//stop(x,y)
            
anim.SetInteger("state",1);//play idle animation
            
        
}
        if(
grounded && !Input.anyKey)//if we are on ground and no key pressed
        
{
            
rb2d.velocity = new Vector2 (0,0);//stop(x,y)
            
anim.SetInteger("state",1);//play idle animation
            
        
}
        if (
Input.GetKey (KeyCode.LeftArrow))//if Left
        
{
            
anim.SetInteger("state",2);//play Run animation
            //rb2d.velocity = new Vector2 (-speed ,rb2d.velocity.y);//move left 
            
_transform.position += new Vector3(-speed00);
            
_transform.localScale = new Vector2 (-xScale,yScale);//face left      
        
}
        if (
Input.GetKey (KeyCode.RightArrow))//if Right      
        
{      
            
anim.SetInteger("state",2);//play Run animation
            //rb2d.velocity = new Vector2 (speed ,rb2d.velocity.y);//move right
            
_transform.position += new Vector3(+speed00);
            
_transform .localScale = new Vector2 (xScale,yScale);//face right
        
}
        
        if (
Input.GetKeyUp (KeyCode.UpArrow)) StartCoroutine (jump ());
    }
//
    
    
IEnumerator jump(){
        if (
grounded) {
            
rb2d.velocity = new Vector2 (rb2d.velocity.xjumpForce);
            
anim.SetInteger ("state"3);//play jump animation
            
yield return new WaitForFixedUpdate();
            
        }
//end switch
        
else
            ;
//if on air
        //anim.SetInteger("state",4);//play double jump animation
        //anim.SetInteger("state",1);//play double jump animation
    
}//jump()
    
    
    
void On_JoystickMoveMovingJoystick move){
        
anim.SetInteger("state",2);//run    
        
signX Mathf.Sign (move.joystickAxis.x);
        
_transform.position += new Vector3(signX*speed00);
        
//rb2d.velocity = new Vector2 (signX *speed ,rb2d.velocity.y);
        
_transform.localScale = new Vector2(signX xScale,yScale);
        if (
move.joystickAxis.0StartCoroutine (jump ());
        
    }
    

در مثال فوق بای بهیته سازی ، تابع jump رو هم coRoutine کردم (IEnumerator jump)
تکنیک های بهینه سازی هم اینجا گفتم :
http://promakers.ir/showthread.php?tid=1...#pid131272
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط qwerty13 ، reza9322 ، fakhtigamer
#5
روش دیگه توی بهینه سازی مطرح می کنم بعدا که هی نباید instantiate و detroy کنید بعضی چیزا رو.smiley
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  اسکریپت توقف و خروج بازی sajjad3011 1 1,101 24/5/1395، 08:33 عصر
آخرین ارسال: jaja
  اسکریپت های کاربردی sajjad3011 0 474 2/1/1395، 02:31 صبح
آخرین ارسال: sajjad3011
  اسکریپت زوم صحنه با ماوس/چرخش صحنه با ماوس sajjad3011 0 505 23/6/1394، 10:18 صبح
آخرین ارسال: sajjad3011
  اسکریپت درگ و دراپ ابجکت ها از نمای بالا sajjad3011 1 1,156 4/9/1393، 02:45 صبح
آخرین ارسال: sajjad3011
  اسکریپت Transform + Rotation /جرکت+چرخش sajjad3011 2 1,191 27/4/1393، 04:47 صبح
آخرین ارسال: sajjad3011



کاربرانِ درحال بازدید از این موضوع: 1 مهمان