unityscript - Ball moves too far when it jumps. It can still be controlled while its in air. Unity3d player control script -
i working on unity ball game. player ball , uses player control script. when ball jumps in air, can still controlled , mo move direction while in air. not want fails purpose of heaving maze since can fly above obstacles.
i using player control script came free unity game kit. have tried fix it, capable of either removing jump function or reducing height, , not fix issue.
using unityengine; using system.collections; public class playercontrol : monobehaviour { private gameobject movejoy; private gameobject _gamemanager; public vector3 movement; public float movespeed = 6.0f; public float jumpspeed = 5.0f; public float drag = 2; private bool canjump = true; void start() { movejoy = gameobject.find("leftjoystick"); _gamemanager = gameobject.find("_gamemanager"); } void update () { vector3 forward = camera.main.transform.transformdirection(vector3.forward); forward.y = 0; forward = forward.normalized; vector3 forwardforce = new vector3(); if (application.platform == runtimeplatform.android) { float tmpspeed = movejoy.getcomponent<joystick>().position.y; forwardforce = forward * tmpspeed * 1f * movespeed; } else { forwardforce = forward * input.getaxis("vertical") * movespeed; } rigidbody.addforce(forwardforce); vector3 right= camera.main.transform.transformdirection(vector3.right); right.y = 0; right = right.normalized; vector3 rightforce = new vector3(); if (application.platform == runtimeplatform.android) { float tmpspeed = movejoy.getcomponent<joystick>().position.x; rightforce = right * tmpspeed * 0.8f * movespeed; } else { rightforce= right * input.getaxis("horizontal") * movespeed; } rigidbody.addforce(rightforce); if (canjump && input.getkeydown(keycode.space)) { rigidbody.addforce(vector3.up * jumpspeed * 100); canjump = false; _gamemanager.getcomponent<gamemanager>().balljump(); } } void ontriggerenter(collider other) { if (other.tag == "destroy") { _gamemanager.getcomponent<gamemanager>().death(); destroy(gameobject); } else if (other.tag == "coin") { destroy(other.gameobject); _gamemanager.getcomponent<gamemanager>().foundcoin(); } else if (other.tag == "speedbooster") { movement = new vector3(0,0,0); _gamemanager.getcomponent<gamemanager>().speedbooster(); } else if (other.tag == "jumpbooster") { movement = new vector3(0,0,0); _gamemanager.getcomponent<gamemanager>().jumpbooster(); } else if (other.tag == "teleporter") { movement = new vector3(0,0,0); _gamemanager.getcomponent<gamemanager>().teleporter(); } } void oncollisionenter(collision collision) { if (!canjump) { canjump = true; _gamemanager.getcomponent<gamemanager>().ballhitground(); } } void ongui() { gui.label(new rect(300,10,100,100),"x: " + movejoy.getcomponent<joystick>().position.x.tostring()); gui.label(new rect(300,30,100,100),"y: " + movejoy.getcomponent<joystick>().position.y.tostring()); } }
the question has been answered. how use script -> create sphere , give "sphere collider", "mesh renderer", "rigidbody", "player control(script)" under player control script put script , done. have ball can controlled in ios,android , pc guess , can jump.
i think canjump flag says "player on ground". so, if "can't jump", means shouldn't allow gamer control character flying. check in start of update() , call return; if canjump == false
Comments
Post a Comment