Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by d_webb · Mar 18, 2013 at 09:15 PM · objectcontrollerdragmouseclick

Moving a 3d object in unity on mouse click with click to move controller

Hi,

I am using a custom character controller that moves my character around a scene through mouse clicks, similar to diablo. I would like to be able to click on an object in the scene that would then disable the controller and move the object with the mouse until clicked again, at which point the object would detach from the mouse at that position and the click to move controller would be re-enabled.

any suggestions would be greatly appreciated :)

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image robertbu · Mar 19, 2013 at 02:25 AM 0
Share

You are likely to get more suggestions if you post the code for your custom character controller. $$anonymous$$y best guess is that your character controller could raycast using the mouse position. If the object the raycast hits has a tag or a script that indicates it is draggable, the controller would suspends moving until it gets the next mouse click.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by d_webb · Mar 19, 2013 at 01:47 PM

sorry for how long this is, i don't really know where I would alter this for the desired effect. the code was provided by some programming students in a concurrent program with mine. we are getting minimal code support for it

private var yourCharacterController : CharacterController; private var dir : Vector3;

private var hit : RaycastHit ;

private var rot = 0;

private var k : Vector3;

var gravity = 1.0;

static var grounded : boolean = false;

//Public Variables: Adjust in front end var RunSpeed = 10; //Character's running speed var WalkSpeed = 5; //Character's walking speed var jumpSpeed = 2; //speed of jump var characterDefense: float = 0; //character's defense stat var marker : GameObject; //what is used to show walk destination var targetDist: int = 1; //how close to target character needs to be to stop walking

//For multiple Idle States public var bonusIdles : int = 0; //the number of additional idle animations / sounds set in front end. static var idleArray = new Array(); //will hold additional idle animations static var idleSounds = new Array(); //will hold additional idle sounds private var idlePlay:String = "idle"; private var idleTime : int = 0; //amount of time we have been stopped //

//Private Variables private var going : boolean = false; //whether the player is moving or not private var running: boolean = false; //if running is false, they player will be walking private var speed: int; //actual speed player will move private var moveAni : String = "walk"; //the move animation to be used (walk or run) private var xDist: float; //distance from target destination private var zDist: float; //distance from target destination static var goTo : Vector3; //current target destination

//Static Variables static var interacting: boolean = false; //if character is interacting with object/enemy or free to move static var mouseOverGUI: boolean = false; //if mouse is over a GUI button

static var clickTimer: int = 0; static var spaceTimer : int = 0; static var jumping : boolean = false;

static var defense: float;

function Awake () {//Don't destroy the player between scenes DontDestroyOnLoad (transform.gameObject); }

function Start() {

yourCharacterController = GetComponent(CharacterController);

yourCharacterController.isTrigger = true;

speed = WalkSpeed; //start out with walk speed defense = characterDefense; //start out with normal defense

animation.wrapMode = WrapMode.Loop; //for our default setting, we'll set all our animations to loop

 animation["run"].layer= -1;
 animation["walk"].layer= -1;
 animation["idle"].layer= -1;
 
 /*-----UNCOMMENT IF ADDED --*/
 //animation["idle1"].layer= -1;
 //animation["idle2"].layer= -1;
 //animation["idle3"].layer= -1;
 //animation["idle4"].layer= -1;
 //animation["idle5"].layer= -1;

 animation.SyncLayer(-1); 
 //puts these animations all on the same layer
 
 animation["jump"].layer= 10;
 animation["jump"].wrapMode = WrapMode.Once; 
 //makes it so our jump animation doesn't loop while we're in the air
 animation["dead"].layer= 10;
 animation["dead"].wrapMode = WrapMode.Once; 
 
 /* -----UNCOMMENT THESE ONCE ANIMATIONS ARE ADDED
     //Name of your melee attack animation in quotes
     animation["melee"].layer= 10;
     animation["melee"].wrapMode = WrapMode.Once; 
     
     //Name of your ranged attack animation here
     animation["ranged"].layer= 10;
     animation["ranged"].wrapMode = WrapMode.Once; 
     
     //Name of your defensive animation here
     animation["defend"].layer= 10;
     animation["defend"].wrapMode = WrapMode.Once; 
     
     //Name of your interaction animation here
     animation["interact"].layer= 10;
     animation["interact"].wrapMode = WrapMode.Once;
 ----------------------------------------------- */
         
 animation.SyncLayer(10);
 
 
 animation.Stop();
 
     animation.Play("idle"); //starts off playing our idle animation by default

 
 //Generate arrays for additional idle animations and sounds
 for(i=0;i100){ //if we've been idle for a while
         idleAnim(); //play new idle animation
     }
 }
 
 
 //IS CHARACTER RUNNING OR WALKING?
 if (running){
     speed = RunSpeed;
     moveAni = "run";
     
 }else{
     speed = WalkSpeed;
     moveAni = "walk";
 }
 
 
 //IF SHIFT KEY IS PRESSED
 if(Input.GetKeyDown(KeyCode.LeftShift) || Input.GetKeyDown(KeyCode.RightShift)){//when shift button is pressed
     
     if(running){ //if already running, change to walking
         running = false;
     }else{ //if already walking, change to running
         running = true;
     }
     
 }
 
 
 //IF CTRL KEY IS PRESSED
 if(Input.GetKeyDown(KeyCode.LeftControl) || Input.GetKeyDown(KeyCode.RightControl)){//when control button is pressed    
     defend();
 }
     
 //find x and z distances between player and target
 xDist = Mathf.Abs(transform.position.x-goTo.x);
 zDist = Mathf.Abs(transform.position.z-goTo.z);
 
 
 if(xDist <= targetDist && zDist <= targetDist){ //how close the character needs to be to the target destination to stop moving
     going = false;
         delete = GameObject.Find("MARKER(Clone)");
         Destroy(delete); //delete the destination marker now that we're there
 }

}

function Update(){ if(!grounded){ yourCharacterController.Move (Vector3(0, -gravity, 0)); }

  //JUMPING
  if(Input.GetButton("Jump")){ //if we press the jump button (spacebar)
      if(jumping == false){    
          spaceTimer++;
          if(spaceTimer <15){
              jump();
          }
      }
     /*spaceTimer++;
     if(spaceTimer <20){
         animation.CrossFade("jump"); //blends from the current animation to the jump animation
         yourCharacterController.Move (Vector3(0, 2, 0)); //move character up
         JumpButton.jumping = false;
     }
     */    
 }else{
     spaceTimer = 0;
 }
 

}

function jump(){ if(Pause.paused == false){ animation.CrossFade("jump"); //blends from the current animation to the jump animation yourCharacterController.Move (Vector3(0, jumpSpeed, 0)); //move character up //var thisChar : GameObject = GameObject.Find("Player"); //thisChar.AddForce (0, 10, 0);

 }

}

function defend(){ animation.CrossFade("defend"); defense = (characterDefense + WeaponUI.weaponDefense);//raise defense by weapon stat //defense += WeaponUI.weaponDefense; print("defending, defense= " + defense);

 yield WaitForSeconds(5); //wait 5 seconds
 defense = characterDefense;
 print("not defending, defense= " +defense);

}

function interact(){ animation.CrossFade("interact"); }

function idleAnim(){ // animation.CrossFade("jump"); idleTime = 0;

 if(bonusIdles > 0){
     var rand = Random.Range(0,bonusIdles); //pick random number    
     
     if (rand == 0){
         doIdle("1");
     }else if (rand == 1){
         doIdle("2");
     }else if (rand == 2){
         doIdle("3");
     }else if (rand == 3){
         doIdle("4");
     }else if (rand <3){
         doIdle("5");
     }
 }

}

function doIdle(num: String){ //SFX = AudioMngr.GetComponent(AudioScript); //if(GeneralManager.sounds){SFX.Idle1();} //if(GeneralManager.animations){ animation.CrossFade("idle"+num); print("idle"+num); //} yield WaitForSeconds (2); //if(GeneralManager.animations){ animation.CrossFade("idle");//}//blend to the idle animation }

function OnTriggerEnter(other : Collider){ grounded = true; //print("collision detected"); }

function OnTriggerStay(other : Collider){ grounded = true; //print("collision detected"); }

function OnTriggerExit(other : Collider){ grounded = false; // print("no collision atm"); }

@script RequireComponent(CharacterController) //include the character controller when this script is applied

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

10 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Bullet mouse control 2 Answers

Trouble adding score when specific object is clicked. (C#) 1 Answer

drag object ios 2 Answers

Android Object Drag With Touch Problem 0 Answers

Make object follow mouse, while actually moving camera, instead of object 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges