- Home /
Collision Detection in Capsule Collider
I am working on 3D fighting game.I have two character with their animation.I have applied character controller and character controller script which i have customized. I have two button one to move farword and one to move backword..And four button to play different animation just like make a punch, hit a leg etc. Upto that its work perfactly fine. Now I have use capsule object with their capsule collider as a child of different bones. Like i have place one capsule object with their collider the child of left hand bone.SO where the bone move that object will move.. I have also place a capusle on the second player body which i place below the head and above the legs its mean it place in the chest erea. I have also used Rigid body having no gravity and onTrigger function clicked in all capsule obects.. Now i want that when my first player hand touch the second player main body in which capsule is place it will call a function.But in the script it will not call..I dont know what is the problem..Can any body guide me. Here is my script
public function Start() : void {
f_inAirStartTime = Time.time;
}
//Checking if the character hit the ground (collide Below)
public function IsGrounded () : boolean {
return (c_collisionFlags & CollisionFlags.CollidedBelow);
}
//Getting if the character is jumping or not
public function IsJumping() : boolean {
return b_isJumping;
}
//Checking if the character is in the air more than the minimum time
//This function is to make sure that we are falling not walking down slope
public function IsAir() : boolean {
return (f_inAirTime > f_minAirTime);
}
//Geting if the character is moving backward
public function IsMoveBackward() : boolean {
return b_isBackward;
}
public function Update() : void {
//Get Main Camera Transform
var cameraTransform = Camera.main.transform;
//Get forward direction of the character
v3_forward = cameraTransform.TransformDirection(Vector3.forward);
v3_forward.y = 0; //Make sure that vertical direction equals zero
// Right vector relative to the character
// Always orthogonal to the forward direction vector
v3_right = new Vector3(v3_forward.z, 0, -v3_forward.x);
//Get Horizontal move - rotation
var f_hor : float ;//= Input.GetAxis("Horizontal");
if(backword==true)
{
f_hor=1;
backword=false;
}
if(farword==true)
{
f_hor=-1;
farword=false;
}
//Get Vertical move - move forward or backward
var f_ver : float = Input.GetAxis("Vertical");
//If we are moving backward
if (f_ver < 0) {
b_isBackward = true;
} else {
b_isBackward = false;
}
//Get target direction
var v3_targetDirection : Vector3 = (f_hor * v3_right) + (f_ver * v3_forward);
//If the target direction is not zero - that means there is no button pressing
if (v3_targetDirection != Vector3.zero) {
//Rotate toward the target direction
v3_moveDirection = Vector3.Slerp(v3_moveDirection, v3_targetDirection, f_rotateSpeed * Time.deltaTime);
v3_moveDirection = v3_moveDirection.normalized; //Get only direction by normalizing our target vector
} else {
v3_moveDirection = Vector3.zero;
}
//Checking if character is on the ground
if (!b_isJumping) {
//Holding Shift to run
//if (Input.GetKey (KeyCode.LeftShift) || Input.GetKey (KeyCode.RightShift)) {
if(Left_punch_anim){
b_isRun = true;
f_moveSpeed = runSpeed;
//Right_punch_anim=false;
} else {
b_isRun = false;
f_moveSpeed = speed;
}
//Press Space to Jump
if (Input.GetButton ("Jump")) {
f_verticalSpeed = jumpSpeed;
b_isJumping = true;
}
}
//Debug.Log(controller.velocity.sqrMagnitude+"magniture");
// Apply gravity
if (IsGrounded()) {
f_verticalSpeed = 0.0; //if our character is grounded
b_isJumping = false; //Checking if our character is in the air or not
f_inAirTime = 0.0;
f_inAirStartTime = Time.time;
} else {
f_verticalSpeed -= gravity * Time.deltaTime; //if our character in the air
//Count Time
f_inAirTime = Time.time - f_inAirStartTime;
}
// Calculate actual motion
var v3_movement : Vector3 = (v3_moveDirection * f_moveSpeed) + Vector3 (0, f_verticalSpeed, 0); // Apply the vertical speed if character fall down
v3_movement *= Time.deltaTime;
// Move the controller
c_collisionFlags = controller.Move(v3_movement);
//Play animation
if (b_isJumping) {
if (controller.velocity.y > 0 ) {
animation[jumpPoseAnimation.name].speed = jumpAnimationSpeed;
animation.CrossFade(jumpPoseAnimation.name, 0.1);
} else {
animation[fallPoseAnimation.name].speed = fallAnimationSpeed;
animation.CrossFade(fallPoseAnimation.name, 0.1);
}
} else {
if (IsAir()) { // Fall down
animation[fallPoseAnimation.name].speed = fallAnimationSpeed;
animation.CrossFade(fallPoseAnimation.name, 0.1);
} else {
if(controller.velocity.sqrMagnitude < 0.1) {
if(Left_punch_anim)
{
animation[leftanimAnimation.name].speed = runAnimationSpeed;
animation.CrossFade(leftanimAnimation.name, 0.5);
Left_punch_anim=false;
idlemode=true;
}
else
if(Right_punch_anim)
{
animation[rightanimAnimation.name].speed = runAnimationSpeed;
animation.CrossFade(rightanimAnimation.name, 0.5);
Right_punch_anim=false;
idlemode=true;
}
else
{
//Debug.Log(controller.velocity.sqrMagnitude+"hjgkjgkjg");
animation[idleAnimation.name].speed = idleAnimationSpeed;
animation.CrossFade(idleAnimation.name, 0.1);
}
} else { //Checking if the character walks or runs
if (b_isRun) {
//Debug.Log("In the run animation");
animation[leftanimAnimation.name].speed = runAnimationSpeed;
animation.CrossFade(leftanimAnimation.name, 0.1);
} else {
animation[walkAnimation.name].speed = walkAnimationSpeed;
animation.CrossFade(walkAnimation.name, 0.1);
}
}
}
}
if(idlemode)
{
}
//Update rotation of the character
if (v3_moveDirection != Vector3.zero) {
transform.rotation = Quaternion.LookRotation(v3_moveDirection);
}
}
public function OnControllerColliderHit(hit:ControllerColliderHit)
{
// Debug.Log("Collision have been enter");
}
/*public function OnTriggerEnter(other:Collider)
{
Debug.Log(other.gameObject.name);
}*/
public function OnCollisionEnter(other:Collision)
{
Debug.Log("collision is enter");
}
function OnTriggerEnter(col:Collider)
{
Debug.Log(col.gameObject.name);
}
Your answer
Follow this Question
Related Questions
Collision Detection 0 Answers
Analysing player metrics help 0 Answers
how to take maya animation file in to unity? 1 Answer
Can someone help me with my script? 0 Answers
Collision no longer occurs after turning off shield (javascript) 1 Answer